自定义类型的 ChildNode 在 Swift 游乐场上返回 Nil
ChildNode of custom type is returning Nil on Swift Playground
我有一个名为 (Player.swift) 的 class。然后在我的 (Scene.swift) class 中,我这样声明我的对象。
var player: Player?
然后在我的 initializeGame 函数中,我这样做
private func initializeGame() {
player = childNode(withName: "Player") as? Player!;
//print NIL
print(player?.name);
// initializePlayer()is declared in Player.swift
player?.initializePlayer();
print(player?.name);
//Print NIL
scoreLabel = childNode(withName: "ScoreLabel") as? SKLabelNode!;
scoreLabel?.text = "0";
}
我在 Xcode 中创建了我的 ios 项目,它工作正常,然后我创建了一个 Playground 项目并导入了该项目中的所有 xcode 文件,我的 playground 是 运行 正常,除了播放器不能正常工作。问题在于将玩家节点与 .sks 文件中的自定义 class 相关联。我的 Xcode 项目的名称是 "Game play" 所以我在模块中编写 Game Play,在自定义 class 中编写播放器,并在 Playground 中使用相同的 sks 文件导致问题,我的 playground 项目的名称是 "MyPlayground",所以模块名称应该与项目名称相同,所以我将模块字段编辑为 Myplayground,但仍然无法正常工作。所以请指导我如何正确更改它。
方法 childNode(withName:)
returns 已添加到节点层次结构的 existing 子节点。如果找不到具有该名称的节点,则它 returns nil
。
您是否有添加名称为 "Player" 的节点的代码?是Player
类型的节点吗?正在调用吗?
1-打开您的 (.sks) 文件
2-Select 玩家节点。
3-Select 显示自定义 class 检查器。
4-写 "MyPlayground_Sources" 而不仅仅是 MyPlayground。
我有一个名为 (Player.swift) 的 class。然后在我的 (Scene.swift) class 中,我这样声明我的对象。
var player: Player?
然后在我的 initializeGame 函数中,我这样做
private func initializeGame() {
player = childNode(withName: "Player") as? Player!;
//print NIL
print(player?.name);
// initializePlayer()is declared in Player.swift
player?.initializePlayer();
print(player?.name);
//Print NIL
scoreLabel = childNode(withName: "ScoreLabel") as? SKLabelNode!;
scoreLabel?.text = "0";
}
我在 Xcode 中创建了我的 ios 项目,它工作正常,然后我创建了一个 Playground 项目并导入了该项目中的所有 xcode 文件,我的 playground 是 运行 正常,除了播放器不能正常工作。问题在于将玩家节点与 .sks 文件中的自定义 class 相关联。我的 Xcode 项目的名称是 "Game play" 所以我在模块中编写 Game Play,在自定义 class 中编写播放器,并在 Playground 中使用相同的 sks 文件导致问题,我的 playground 项目的名称是 "MyPlayground",所以模块名称应该与项目名称相同,所以我将模块字段编辑为 Myplayground,但仍然无法正常工作。所以请指导我如何正确更改它。
方法 childNode(withName:)
returns 已添加到节点层次结构的 existing 子节点。如果找不到具有该名称的节点,则它 returns nil
。
您是否有添加名称为 "Player" 的节点的代码?是Player
类型的节点吗?正在调用吗?
1-打开您的 (.sks) 文件
2-Select 玩家节点。
3-Select 显示自定义 class 检查器。
4-写 "MyPlayground_Sources" 而不仅仅是 MyPlayground。