在Xcode中的SKSpriteNode内设置LabelNode的文本

在Xcode中的SKSpriteNode内设置LabelNode的文本,xcode,sprite-kit,sklabelnode,Xcode,Sprite Kit,Sklabelnode,我有一个SKLabelNode在一个SKSpiteNode内,还有一个SKSpiteNode内。其目的是创建一个带有空白按钮的图形,然后创建该按钮的文本。我可以创建这个,但在我的代码中,我想更改这个标签节点的文本,但我似乎不能这样做 SKSpriteNode * barStart = [SKSpriteNode spriteNodeWithTexture:[SKTexture textureWithImageNamed:baseColor]]; barStart.name=barName;

我有一个SKLabelNode在一个SKSpiteNode内,还有一个SKSpiteNode内。其目的是创建一个带有空白按钮的图形,然后创建该按钮的文本。我可以创建这个,但在我的代码中,我想更改这个标签节点的文本,但我似乎不能这样做

SKSpriteNode * barStart = [SKSpriteNode spriteNodeWithTexture:[SKTexture textureWithImageNamed:baseColor]];

barStart.name=barName;

SKSpriteNode * playPauseButton = [SKSpriteNode spriteNodeWithTexture:[SKTexture textureWithImageNamed:@"button"]];
playPauseButton.name=[NSString stringWithFormat: @"%@-playPauseButton",barName];
playPauseButton.position=CGPointMake( playPauseButton.frame.size.width*2.2, 0);
playPauseButton.alpha=0;

[barStart addChild:playPauseButton];


SKLabelNode * playPauseLabel = [SKLabelNode labelNodeWithFontNamed:@"HelveticaNeue-Thin"];
playPauseLabel.name=[NSString stringWithFormat: @"%@-playPauseButtonLabel",barName];

NSLog(@"playPauseLabel.name : %@",playPauseLabel.name);
playPauseLabel.position=CGPointMake(0,-5);
playPauseLabel.fontSize = 10;
playPauseLabel.horizontalAlignmentMode=SKLabelHorizontalAlignmentModeCenter;

playPauseLabel.fontColor = [SKColor grayColor];
playPauseLabel.text=@"start/stop";

[barStart addChild:playPauseLabel];
我试图改变如下:

[[[[self childNodeWithName:@"bar1"] childNodeWithName:@"bar1-playPauseButton"] 
  childNodeWithName:@"bar1-playPauseButtonLabel"] setText:@"somethingElse"];
我得到一个错误:

No visible @interface for 'SKNode' declares the selector 'setText:'
我还尝试创建一个本地SKNode,将childNode引用传递给它,并尝试使用点概念设置文本,如
thisLabelNode.text=@“somethingElse”
,虽然这不会导致错误,但也不会更改文本

有什么想法吗

谢谢,
rich

childNodeWithName
返回类型为
SKNode*
的对象,而不是SKLabelNode。因此出现了错误

如果知道返回的节点是SKLabelNode(或nil),则可以强制转换它。我还建议避免嵌套太多函数调用,因为这会使代码更难阅读。此外,您还可以在这里利用以下优势:

id label = [self childNodeWithName:@"//bar1-playPauseButtonLabel"];
((SKLabelNode*)label).text = @"whatever";
前缀
/
表示要递归搜索以
self
开头的节点图。这将返回找到的与给定名称匹配的第一个节点