我正在尝试加载CCScene,然后在使用场景之前更改其中的一些属性。当我尝试更改它的属性时,它会显示[CCScene setProperty] - 无法识别的选择器发送到实例,即使我将CCScene转换为具有公共属性的正确类!
#import "MainScene.h"
#import "Gameplay.h"
@implementation MainScene
-(void)play:(CCButton *)sender{
Gameplay *gameplay = (Gameplay *)[CCBReader loadAsScene:@"Gameplay"];
NSLog(@"%@\n",[gameplay class]);
}
@end
此代码输出CCScene而不是输出游戏性。我该如何解决这个问题?
答案 0 :(得分:3)
这不是演员的问题。 如果您执行loadAsScene
,则CCBReader
会将 Gameplay.ccb 根节点包装到场景中。
您可以在文档中阅读:
...加载具有指定名称的ccbi文件并将其包装在CCScene节点中。
如果您使用控制台打印此节点的子节点:
(lldb) po scene.children
您将获得以下结果:
<__NSArrayM 0x13a38720>(
<Gameplay = 0x13a3f8a0 | Name = >
)
这显示了您的游戏类如何被包装成CCScene
。
如果您想访问Gameplay
节点,则需要访问CCScene
的第一个孩子:
Gameplay *gameplay = (Gameplay *)[[CCBReader loadAsScene:@"GameplayScene"] children] [0];
随意使用不能在一行中完成所有工作的其他解决方案。
答案 1 :(得分:0)
或者你可以使用
SceneClass *sceneInstance = [CCBReader load:NSStringFromClass([SceneClass class])];
这导致:
(lldb) po sceneInstance
<SceneClass = 0x8270b70 | Name = >