如何在另一个视图控制器中访问 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应用程序中

在另一个视图控制器中显示视图控制器时如何防止闪烁

如何在另一个视图中使用已经初始化的类?

SpriteKit 中的水平滚动(与视图控制器相比)

如何将图像设置为在另一个视图控制器中异步获取的 UIImageView?

如何在另一个视图控制器中使用核心数据编辑 Tableview 单元格数据