【问题标题】:ChildNode of custom type is returning Nil on Swift Playground自定义类型的 ChildNode 在 Swift Playground 上返回 Nil
【发布时间】: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,仍然无法正常工作。所以请指导我如何正确更改它。

【问题讨论】:

    标签: swift xcode sprite-kit swift-playground skscene


    【解决方案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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多