Ios Spritekit.sks文件中的自定义类未更改

Ios Spritekit.sks文件中的自定义类未更改,ios,sprite-kit,Ios,Sprite Kit,我一直在使用SpriteKit,但无法解决.sks文件中自定义类的问题。下面是在新创建的SpriteKit项目中可以找到的sceneDidLoad方法: - (void)viewDidLoad { [super viewDidLoad]; // Load 'GameScene.sks' as a GKScene. This provides gameplay related content // including entities and graphs. GKScene *scene = [

我一直在使用SpriteKit,但无法解决.sks文件中自定义类的问题。下面是在新创建的SpriteKit项目中可以找到的sceneDidLoad方法:

- (void)viewDidLoad {
[super viewDidLoad];

// Load 'GameScene.sks' as a GKScene. This provides gameplay related content
// including entities and graphs.
GKScene *scene = [GKScene sceneWithFileNamed:@"GameScene"];

// Get the SKScene from the loaded GKScene
GameScene *sceneNode = (GameScene *)scene.rootNode;

// Copy gameplay related content over to the scene
sceneNode.entities = [scene.entities mutableCopy];
sceneNode.graphs = [scene.graphs mutableCopy];

// Set the scale mode to scale to fit the window
sceneNode.scaleMode = SKSceneScaleModeAspectFill;

SKView *skView = (SKView *)self.view;

// Present the scene
[skView presentScene:sceneNode];

skView.showsFPS = YES;
skView.showsNodeCount = YES;
}
没有什么太疯狂的-它只是加载一个名为GameSecene的.sks文件,找到它的根节点(由于.sks中的自定义类设置为该类型),并将其推送到屏幕上

我遇到的问题是,当我更改这个.sks文件和相关类时,根节点从不采用自定义类。sceneWithFileNamed方法正在找到.sks文件,因为无效名称将导致该方法返回nil,而它当前返回一个场景(但使用普通的SKScene根节点而不是我的自定义类)。当我尝试将场景实体指定给sceneNode时,这会导致项目崩溃,sceneNode不是SKScene的内置属性

这是我的修改版本,它只包括两个编辑:

- (void)viewDidLoad {
[super viewDidLoad];

// Load 'MenuScene.sks' as a GKScene. This provides gameplay related content
// including entities and graphs.
GKScene *scene = [GKScene sceneWithFileNamed:@"MenuScene"];

// Get the SKScene from the loaded GKScene
MenuScene *sceneNode = (MenuScene *)scene.rootNode;

// Copy gameplay related content over to the scene
sceneNode.entities = [scene.entities mutableCopy];
sceneNode.graphs = [scene.graphs mutableCopy];

// Set the scale mode to scale to fit the window
sceneNode.scaleMode = SKSceneScaleModeAspectFill;

SKView *skView = (SKView *)self.view;

// Present the scene
[skView presentScene:sceneNode];

skView.showsFPS = YES;
skView.showsNodeCount = YES;
}
以下是MenuScene.h文件:

#import <SpriteKit/SpriteKit.h>
#import <GameplayKit/GameplayKit.h>

@interface MenuScene : SKScene

@property (nonatomic) NSMutableArray<GKEntity *> *entities;
@property (nonatomic) NSMutableDictionary<NSString*, GKGraph *> *graphs;

@end
#导入
#进口
@界面菜单cene:SKScene
@属性(非原子)NSMutableArray*实体;
@属性(非原子)NSMutableDictionary*图;
@结束
也许更有趣的是,我可以更改GameSecene.sks的自定义类,但是代码运行时好像什么都没有更改

我是否遗漏了什么,或者自定义类是否已损坏


更新:我已尝试将模块名放在.sks检查器中自定义类下面的字段中,但没有成功。下面是描述该解决方案的帖子的链接:

您是否在新的自定义类中声明了entities数组?例如,游戏场景文件中将有一个实体数组。你还需要图表。是的!MenuScene文件或多或少是GameSecene类的翻版,只是为了让我大吃一惊。我将继续并将MenuScene.h文件添加到问题中。如果您能展示如何修改
viewDidLoad
以呈现
MenuScene
。完成和完成,这也会有所帮助。只进行了两次编辑。MenuScene.m文件基本上是空的。sceneDidLoad()函数永远不会被调用(如果相关的话)。在MenuScene.sks中,是否将自定义类设置为
MenuScene
?是否在新的自定义类中声明了entities数组?例如,游戏场景文件中将有一个实体数组。你还需要图表。是的!MenuScene文件或多或少是GameSecene类的翻版,只是为了让我大吃一惊。我将继续并将MenuScene.h文件添加到问题中。如果您能展示如何修改
viewDidLoad
以呈现
MenuScene
。完成和完成,这也会有所帮助。只进行了两次编辑。MenuScene.m文件基本上是空的。sceneDidLoad()函数永远不会被调用(如果相关的话)。在MenuScene.sks中,您是否将自定义类设置为
MenuScene