如何访问 SpriteKit 场景编辑器参考节点上自定义类中包含的 Swift 中的变量?
Posted
技术标签:
【中文标题】如何访问 SpriteKit 场景编辑器参考节点上自定义类中包含的 Swift 中的变量?【英文标题】:How do I access variables in Swift contained in a custom class on a SpriteKit Scene Editor Reference node? 【发布时间】:2019-07-16 13:49:09 【问题描述】:首先我想说我是完全自学的,我在互联网上找到了尽可能多的教程,所以如果有某些我不太熟悉的概念,请提前道歉。
好吧,我想就困扰我好几天的事情寻求帮助。
我在 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()
这只是我制作的一个小示例项目,因此我可以通过尝试可以找到的不同解决方案来了解这个概念,但没有成功。 我意识到我可以创建全局变量,但我试图保持我的代码干净,因为与此节点相关的所有功能都保留在此参考类中。我也被告知它的编程不好?
任何帮助将不胜感激:)
巴尼
【问题讨论】:
你需要将它转换为referenceClass,而不是SKReferenceNode 嗨 KnightOfDragon,谢谢你,谢谢你,谢谢你 - 它非常适合我想要做的事情。我花了几天时间浏览教程和其他快速书籍,但我找不到答案。 【参考方案1】:首先我会检查搜索是否正确 - https://developer.apple.com/documentation/spritekit/sknode/searching_the_node_tree
例如,在模板 SpriteKit 项目节点中搜索带有 //
前缀,即在您的情况下为 //referenceNode
。
其次,不要立即将其强制转换为SKReferenceNode
,首先检查返回的对象类型(如果有)。
【讨论】:
仅在您不能保证您的节点所在的树中的分支时才使用 //。 // 是一个搜索函数,需要一些时间来执行 嗨,Maxim,SkSpritenodes 等的搜索工作正常,结果我将参考节点转换为错误的类型,这就是为什么我不能在类中使用变量的原因。但是谢谢你的洞察力:)以上是关于如何访问 SpriteKit 场景编辑器参考节点上自定义类中包含的 Swift 中的变量?的主要内容,如果未能解决你的问题,请参考以下文章
如何在另一个视图控制器中访问 SpriteKit 场景的变量?