首先,我想说的是,我完全是自学成才,因此我会在网上找到尽可能多的教程,因此如果我对某些概念不太熟悉,请提前道歉。

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

我在SpriteKit场景(GameScene)中有一个参考节点(referenceNode),
该引用节点引用了另一个SpriteKit Scene(referenceScene),
并且此场景具有一个Custom类(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中。也有人告诉我它不好编程吗?

任何帮助将不胜感激 :)

巴尼

最佳答案

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

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

其次,不要立即将其强制强制转换为SKReferenceNode,首先要检查返回的对象类型(如果有)。

关于swift - 如何在SpriteKit场景编辑器引用节点上的自定义类中访问Swift中的变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54827557/

10-10 19:39
查看更多