如何在另一个视图控制器中访问 SpriteKit 场景的变量?
Posted
技术标签:
【中文标题】如何在另一个视图控制器中访问 SpriteKit 场景的变量?【英文标题】:How can I access variables of a SpriteKit scene in another view controller? 【发布时间】:2014-03-16 21:21:16 【问题描述】:我是初学者,由于某种原因,我不知道如何获取和设置不同类和场景的属性。
编辑: 对不起,我不清楚。我会试着把事情弄清楚。我有一个简单的小游戏应用程序,其中有一个人玩游戏的场景。游戏结束后,应用程序将它们切换到不是另一个场景的游戏视图,它只是一个 Viewcontroller 类,我使用情节提要来构建界面。如何获得分数,场景中的 int,以显示在游戏结束屏幕上,不同的视图控制器。
【问题讨论】:
NSNotification 或委托。 useyourloaf.com/blog/2010/06/06/delegation-or-notification.html 【参考方案1】:您的问题对我来说有点不清楚,但无论如何我都会尝试提供帮助。例如,SKScene 有一个名为 backgroundColor 的属性,它是 SKColor 类型。如果你想改变它的值,你可以做以下两种方式。
MyScene.backgroundColor = [SKColor greenColor];
[MyScene setBackgroundColor: [SKColor blueColor]];
在第一种方式中,您直接访问 backgroundColor 并将其值设置为绿色。 在第二个中,您正在调用一个名为“setter”的方法,并作为参数传递蓝色。每次创建 @property 时,它都会为您创建 2 个方法,即该属性的 getter 和 setter。getter 返回变量值,而 setter 用于为该变量设置值。这只是一个概述,还有更多关于它的内容,你应该在谷歌上搜索更多信息,那里有很多教程。
【讨论】:
对不起,不够清晰,请参阅编辑。感谢您的帮助【参考方案2】:您可以通过在场景中创建一个静态 int 并添加一个类方法来设置静态值并获取它。
在 YourScene.m 中
@implementation YourScene
static int score=nil;
+(int)getStaticScore
return score;
+(void)setStaticScore:(int)new
score=new;
@end
在 YourScene.h 中
@interface YourScene : SKScene
+(void)setStaticScore:(int)new;
+(int)returnStaticScore;
@end
然后你在每个 SKScene Viewcontroller 和其他你需要阅读分数的类中添加#import "YourScene.h"。
然后你调用类方法来获得分数。 例如,在 gameOverScene.m 中,您导入 YourScene.h 并调用
[YourScene returnStaticScore]; //Will return you the score
[YourScene setStaticScore:0]; //set the score to 0 for example
更多信息,你可以在谷歌上搜索关于单例的信息。 我希望这会对你有所帮助。
【讨论】:
以上是关于如何在另一个视图控制器中访问 SpriteKit 场景的变量?的主要内容,如果未能解决你的问题,请参考以下文章
如何将SpriteKit中的单个游戏场景添加到普通的单视图Swift应用程序中