自定义类型的 ChildNode 在 Swift Playground 上返回 Nil
Posted
技术标签:
【中文标题】自定义类型的 ChildNode 在 Swift Playground 上返回 Nil【英文标题】:ChildNode of custom type is returning Nil on Swift Playground 【发布时间】:2017-04-01 09:56:37 【问题描述】:我有一个名为 (Player.swift) 的课程。然后在我的(Scene.swift)类中,我像这样声明了我的对象。
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 文件中的自定义类相关联。我的 Xcode 项目的名称是“Game play”,所以我在模块中编写 Game Play,在自定义类中编写 Player,并在 Playground 中使用相同的 sks 文件导致问题,我的游乐场项目的名称是“MyPlayground”,所以模块名称应该与项目名称相同,所以我将模块字段编辑到 Myplayground,仍然无法正常工作。所以请指导我如何正确更改它。
【问题讨论】:
【参考方案1】:childNode(withName:)
方法返回一个已添加到节点层次结构中的现有子节点。如果没有找到具有该名称的节点,则返回 nil
。
您有添加名为“Player”的节点的代码吗?它是Player
类型的节点吗?它被调用了吗?
【讨论】:
请检查编辑。问题在于将播放器节点与 .sks 文件中的自定义类相关联。 Swift(和 Objective C 相关)区分大小写,因此请确保模块名称与您在 .swift 文件中使用的导入完全匹配。 我之前没有玩过 .sks 文件,但让我看看能否整理一个快速演示来复制您的问题。 github.com/niqbal/playgroundtest 这是我的 github repo 的链接,你可以从那里下载项目 myplayground.playground 文件。【参考方案2】:1-打开您的 (.sks) 文件
2-选择播放器节点。
3-选择显示自定义类检查器。
4- 编写“MyPlayground_Sources”,而不仅仅是 MyPlayground。
【讨论】:
以上是关于自定义类型的 ChildNode 在 Swift Playground 上返回 Nil的主要内容,如果未能解决你的问题,请参考以下文章
Swift编程语言中如何实现自定义类型的for-in循环(基于Swift 2.2)
将数组内容(自定义类型)写入 plist 作为 swift 中的键控数组
Swift Playground - 实例成员不能用于类型自定义类