ios - SKSpriteNode 返回空名称

标签 ios sprite-kit

为什么创建的 Sprite 名称不保存甚至不返回?

我在场景的初始化中添加了几个对象(SKSpriteNode)

-(id)initWithSize:(CGSize)size {
    NSArray *oxyObjects = [self.oxygens objectsNamed:@"oxy"];
    for (NSDictionary *enemyObj in oxyObjects) {
        SKSpriteNode *oxyNode = [SKSpriteNode spriteNodeWithImageNamed:@"oxygen"];
        NSString *valeurX=enemyObj[@"x"];
        float x = [valeurX floatValue];
        NSString *valeurY=enemyObj[@"y"];
        float y = [valeurY floatValue];
        CGPoint oxyPosition = CGPointMake(x, y);
        oxyNode.position = oxyPosition;
        oxyNode.name = @"ballOxygen";
        NSLog(@"oxy %@",oxyNode);
        [self.map addChild:oxyNode];
    }

日志给我这个 Sprite 的正确名称

oxy name:'ballOxygen' texture:[ 'oxygen@2x.png' (24 x 24)] position:{454, 99} size:{12, 12} rotation:0.00

为了检查碰撞,我尝试使用

    [[self children] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    SKNode *node = (SKNode *)obj;
    NSLog(@"obj : %@", obj);

或者这个

NSArray *nodes = self.children;
for(SKNode * node in nodes){
    SKSpriteNode *obj = (SKSpriteNode *) node;
    NSLog(@"obj : %@", obj);

但它总是返回一个空名称

obj : name:'(null)' texture:[ 'Bird1@2x.png' (8 x 24)] position:{100, 100} size:{17, 12} rotation:0.00

最佳答案

我的最佳猜测:

您正在将 oxyNode 添加到 self.map,但您正在枚举 self.children,而您可能应该枚举 self.map.children。

试试这个:

[self.map.children enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){
    SKNode *node = (SKNode *)obj;
    NSLog(@"obj : %@ (%p)", obj, obj);
}];

关于ios - SKSpriteNode 返回空名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24095332/

相关文章:

swift - 子类节点,但想检测场景中的触摸

ios - 当我们将 nil 指向 sprite 节点时会发生什么?

ios - 此类不是键值编码兼容的键

ios - 为什么我在 iphone 应用程序发布之前获得 admob 点击

ios - 仅在 DEBUG 配置上符合协议(protocol)

ios - 解析 n 个 UIImage,结果图像变得困惑

ios - 将 SpriteKit 添加到空应用程序

ios - 无法让 UISwitch 约束工作 - swift 4

ios - UIView 蒙版透明。

ios - 在切换到新场景之前,Sprite 套件无法运行 Action