0

首先,我想说我是完全自学的,我在互联网上找到了尽可能多的教程,所以如果有某些我不太熟悉的概念,请提前道歉。

好吧,我想就困扰我好几天的事情寻求帮助。

我在 SpriteKit 场景(GameScene)中有一个引用节点(referenceNode),
该引用节点引用了另一个 SpriteKit 场景(referenceScene),
并且这个场景有一个自定义类(referenceClass.swift)。

我在 referenceClass.swift 中有一个名为 trueOrFalse 的布尔变量,我希望能够从我在 gameScene.swift 中的代码中更改值。

我已经尝试通过创建实例来从 SceneEditor 转换为我的代码,就像你会做 SKSpriteNode 和 SKLableNodes 一样,但这似乎不起作用

class GameScene: SKScene
{

var referenceNode: SKReferenceNode!  //link to SceneEditor Reference Node

override func didMove(to view: SKView)
{
    referenceNode = self.childNode(withName: "referenceNode") as! SKReferenceNode

}

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?)
{
    referenceNode.trueOrFalse = false
}
}

这是我的自定义课程

import UIKit
import SpriteKit
class referenceClass: SKScene
{
    var trueorfalse:Bool = true
    func oneFunction()
    {

    }
}

这只是我制作的一个小示例项目,因此我可以通过尝试可以找到的不同解决方案来了解这个概念,但没有成功。我意识到我可以创建全局变量,但我试图保持我的代码干净,因为与此节点相关的所有功能都保留在此参考类中。我也被告知它的编程不好?

任何帮助将不胜感激 :)

巴尼

4

1 回答 1

0

首先,我会检查搜索是否正确完成 - https://developer.apple.com/documentation/spritekit/sknode/searching_the_node_tree

例如,在模板 SpriteKit 项目节点中使用//前缀搜索,即//referenceNode在您的情况下。

其次,不要SKReferenceNode立即强制转换,首先检查返回什么样的对象(如果有)。

于 2019-02-23T13:22:37.910 回答