Alf*_*nso 8 iphone ios ios7 sprite-kit
我试图在SpriteKit中的场景"SKScene"之间传递数据.例如,我想将分数从A级传递到B级.
也许解决方案是归档,但我想实现更简单的东西,就像我们使用视图控制器一样.
在这方面的任何线索将非常感谢.
doc*_*tor 15
如果您要将分数传递到许多不同的场景,您可能希望将其存储在NSUserDefaults一些可访问的存储机制中.但是,如果您希望在SpriteKit对象之间传递数据,则每个SKNode(包括SKScene)都会调用一个字典属性userData,您可以将其用于您想要的任何内容.以下是如何在场景之间传递分数的示例:
- (void)changeScene
{
SKView *spriteView = (SKView *) self.view;
SKScene *currentScene = [spriteView scene];
SKScene *newScene = [MySceneClass scene];
[newScene.userData setObject:[currentScene.userData objectForKey:@"score"] forKey:@"score"];
[spriteView presentScene:newScene];
}
Run Code Online (Sandbox Code Playgroud)
将分数存储在视图控制器实例中,或者将SKView子类化并将其存储在那里.这将保留视图生命周期内的任何对象.
如果您需要在应用重启之间保留分数,请使用NSUserDefaults.
Kobold Kit实际上使这样的东西变得容易,没有自定义子类.视图具有(并且任何节点都可以拥有)一个KKModel对象,该对象是两个整数类型(float,int等等via KKMutableNumber)和任意对象的键/值存储.
因此,您可以通过将其绑定到视图来持久化并从任何节点访问您的highscores对象:
[self.kkView.model setObject:highscores forKey:@"highscores"];
Run Code Online (Sandbox Code Playgroud)
kkView属性是写入的简写(KKView*)self.view.
有完全没有必要使用或使用单身受益的对象,它们的寿命绑要么到现场或视图.它们属于场景或视图,时期.
| 归档时间: |
|
| 查看次数: |
9479 次 |
| 最近记录: |