首先,我想说的是,我完全是自学成才,遵循互联网上我能找到的所有教程,所以如果有某些概念我不太熟悉,请提前道歉。
好了,说到这里,我想就一些困扰了我几天的问题寻求帮助。
我在SpriteKit场景(GameScene)中有一个引用节点(ReferenceNode),
该引用节点引用另一个SpriteKit场景( referenceScene),
此场景有一个自定义类(referenceClass.swift)。
我在referenceClass.swift中有一个名为trueOrFalse的布尔变量,我希望能够从我在gameScene.swift中的代码中更改vale。
我尝试过通过创建实例将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()
{
}
}这只是我做的一个小的示例项目,所以我可以尝试我能找到的不同的解决方案,但没有成功。我意识到我可以创建全局变量,但我正在努力保持代码的整洁,就像所有与这个节点相关的功能一样,保存在这个referenceClass中。还有,我被告知它的编程不好?
任何帮助都将不胜感激:)
巴尼
发布于 2019-02-23 21:22:38
首先,我将检查搜索是否正确完成- https://developer.apple.com/documentation/spritekit/sknode/searching_the_node_tree
例如,在模板中,使用//前缀搜索SpriteKit项目节点,例如,在您的示例中为//referenceNode。
其次,不要立即将其强制转换为SKReferenceNode,首先检查返回的对象类型(如果有)。
https://stackoverflow.com/questions/54827557
复制相似问题