gpt4 book ai didi

ios - SKEmitterNode的自定义类子类不起作用

转载 作者:行者123 更新时间:2023-12-01 19:01:12 25 4
gpt4 key购买 nike

我正在编写一个简单的SpriteKit游戏,但是我遇到了一个非常严重的错误。
我创建了SKEmitterNode的子类,命名为GameNode。我需要一些特殊的实例方法。我为此自定义类(GameNode)设置了一个属性。其以下内容:

@property (nonatomic,assign) nodetype GNodeType;

是的,我为此属性类型使用一个枚举。我的枚举如下:
    typedef enum {
nodetypeblue,
nodetypered,
nodetypegreen,
nodetypewhite

}nodetype;

好的,现在我的问题是什么。当我使用以下自定义init方法实例化此类时:
-(id)initWithRandomTypeforSkScene:(SKScene*)Scene{
self=[super init];
if (self) {
nodetype type = arc4random_uniform(4);
self.GNodeType=type;
NSString *bluepath = [[NSBundle mainBundle] pathForResource:@"bluenode" ofType:@"sks"];

NSString *pathtoadd = [NSString string];


switch (type) {
case nodetypeblue:
pathtoadd = bluepath;
break;
//I have some possiblilies here i not list them all, its desnt matter
default:
pathtoadd = bluepath;
break;
}

self = [NSKeyedUnarchiver unarchiveObjectWithFile:pathtoadd];
self.position = CGPointMake(arc4random_uniform(Scene.size.width-40)+20, arc4random_uniform(Scene.size.height-40)+20);
//self.name = @"node";
[self setScale:0.25f];



return self;

}
else{
return nil;
}

}

OK,之后,我尝试创建此类的z实例,如下所示:
GameNode * Node = [[GameNode alloc] initWithRandomTypeforSkScene:self];
//Self is a SKScene here

这是我的问题。这将返回一个SKEmitterNode而不是GameNode。我怎么知道的?因为每当我调用Node.GNodeType时,xcode都会发送带有以下错误消息的Exception:

-[SKEmitterNode GNodeType]:无法识别的选择器已发送到实例0x10a022f80

我设置了很多刹车点,并尽力做到了,但是它并没有解决任何问题。
哦,在我创建了一个名为“Node”的实例之后,我检查了一下,创建完该Tpye之后就是SKEmitterNode而不是GameNode。如果我检查类中的类型或GnodeType,则一切正常。创建,初始化后,我刚好在外面遇到问题。请帮助。

最佳答案

在LearnCocos2D的帮助下,我成功地解决了该问题。

因此,我为我的类创建了一个属性,其中包含一个SKEmitterNode。我将sks添加到属性中,并提出了此Property而不是整个类。

关于ios - SKEmitterNode的自定义类子类不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22822121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com