使用apple spritekit,我怎样才能唯一地识别节点,如果说20个节点,它们具有相同的艺术作品并且要随机放置在屏幕上?是否有更快的方式,如在cocos2d中有一个"标签"功能识别?
答案 0 :(得分:2)
我通常使用属性名称:
SKNode *myNode = [[SKNode alloc]init];
myNode.name = @"uniqueName";
[self addChild:myNode];
在SKScene中,要恢复节点,您可以这样做:
[self childNodeWithName:@"uniqueName"]; // self is SKScene
如果由于某种原因您不想使用名称,您可以始终将一个SKNode子类化并添加您的个人唯一标识符:
MySpriteNode.h
@interface MySpriteNode : SKSpriteNode
@property (nonatomic, strong) NSString *personalIdentifier;
@end
和 MySpriteNode.m
#import "MySpriteNode.h"
@implementation MySpriteNode
@end
使用第二个选项,您可以:
for (MySpriteNode *sprite in [self children]) personalIdentifier
{
if ([sprite.personalIdentifier isEqualToString:@"something"])
{
//do something
}
}
编辑1:
尝试按照这些教程,我真的认为它们很棒。我和他们学到了很多东西:
答案 1 :(得分:2)
我不是最熟练的精灵,但这是你正在寻找的东西吗?
保存:
NSArray * nodesArray; // some array of nodes.
for (int x = 0; x < nodesArray.count; x++) {
SKNode * node = nodesArray[x];
node.name = [NSString stringWithFormat:@"%i", x];
}
提取:
int nodeToRetrieveTag = 2; // or whatever
SKNode* nodeToRetrieve = [self.scene childNodeWithName:[NSString stringWithFormat:@"%i", nodeToRetrieveTag]];
答案 2 :(得分:0)