Ios ClassA childNodeWithName:@“name”在ClassB中不起作用

Ios ClassA childNodeWithName:@“name”在ClassB中不起作用,ios,objective-c,sprite-kit,Ios,Objective C,Sprite Kit,我正试图在我的RPG地图中,从战略性地放置的SKSpriteNodes中创建一条不可见的通道,供我的NPC来回走动,使地图看起来更生动。然后我想在我的NPC类中创建一个循环方法,将它从一个不可见的SKSpritode移动到另一个。除了人大的实际行动外,一切都是好的。更准确地说,我无法从我的NPC类中访问我的SKScene的不可见节点的位置,这是一个SKSpritode。我创建了几个不可见路径节点,下面是如何在我的场景中执行1: TMXObjectGroup *group = [_tileMap

我正试图在我的RPG地图中,从战略性地放置的SKSpriteNodes中创建一条不可见的通道,供我的NPC来回走动,使地图看起来更生动。然后我想在我的NPC类中创建一个循环方法,将它从一个不可见的SKSpritode移动到另一个。除了人大的实际行动外,一切都是好的。更准确地说,我无法从我的NPC类中访问我的SKScene的不可见节点的位置,这是一个SKSpritode。我创建了几个不可见路径节点,下面是如何在我的场景中执行1:

TMXObjectGroup *group = [_tileMap groupNamed:@"WalkingPath"];

NSDictionary *s1node1 = [group objectNamed:@"street1Node1"];
if (s1node1)
{
    CGFloat x = [s1node1[@"x"] floatValue];
    CGFloat y = [s1node1[@"y"] floatValue];
    CGFloat w = [s1node1[@"width"] floatValue];
    CGFloat h = [s1node1[@"height"] floatValue];

    SKSpriteNode *object = [SKSpriteNode spriteNodeWithColor:[SKColor redColor] size:CGSizeMake(w, h)];
    object.name = @"strt1N1";
    object.position = CGPointMake(x + w/2, y + h/2);

    object.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(w, h)];

    object.physicsBody.categoryBitMask       = terrainCategory;
    object.physicsBody.contactTestBitMask    = playerCategory | npcCategory;
    object.physicsBody.collisionBitMask      = 0;
    object.physicsBody.dynamic = NO;
    object.physicsBody.friction = 0;
    object.hidden = YES;

    [_worldNode addChild:object];
}
一旦以上所有代码编译完毕并运行应用程序,所有内容都会按原样创建。那很好。但是,当尝试从我的NPC类中的访问这个确切的节点时,什么都没有发生。我使用IF语句检查这样的节点是否存在。控制台说它不。。。vwaAt??以下是NPC类中尝试访问SKScene的childNode的移动方法:

-(void)beginMovement
{
    //_oTC is a @property (@property OTC *oTC;).
    //_oTC = (OTridentCity*)self.scene; //<---DOESN'T DO ANYTHING.
    //_oTC = [[OTridentCity alloc] init]; //<---DESTROYS THE APP :D
    //[_oTC childNodeWithName:@"strt1N1"]; //<---Lazy reference.

    if ([_oTC childNodeWithName:@"strt1N1"]) //<---VY NO WERK????
    {
        NSLog(@"EXISTS!"); //<---VANT DIS!!!!!!
    }
    else
    {
        NSLog(@"DOESN'T EXIST"); //<---POPS OUT EVERY TIME.
    }


    CGPoint aPoint      = CGPointMake([_oTC childNodeWithName:@"strt1N1"].position.x, [_oTC childNodeWithName:@"strt1N1"].position.y);
    SKAction *move      = [SKAction moveTo:CGPointMake(aPoint.x, aPoint.y) duration:3.0];
    SKAction *wait      = [SKAction waitForDuration:4.0 withRange:4.0];


    //NPC does move, but it seems towards coordinates (0, 0).
    [self runAction:[SKAction sequence:@[move, wait]] completion:^{ /*[self beginMovement];*/ NSLog(@"Moving"); }];
}

我是否忘记了从SKSpriteNode类中的SKScene访问childNodes的一些内容?

如果使用NSLog@OTC对象:%@,_otc;?嗯,上面写着:OTC对象:null。那么,我如何正确地访问oTC?它毕竟被正确地导入到NPC类中。属性声明只是一个指针。在你让它做事之前,需要给它分配一个实际的对象。创建strt1N1节点的对象是否引用了您的NPC对象?…或者NPC可以从_worldNode按名称获取它?这真的取决于你的对象是如何连接的。我明白了。我是在NPC的移动方法中做的:OTC aScene=OTCself.scene;现在NSLog@OTC对象:%@,上升;显示该对象存在。唯一的问题是,我从来没有用这种方法检查现有节点。如果我写aScene.worldNode.etc。那就行了。但我如何访问worldNodes childNodeWithName?