【问题标题】:Swift - SKSprite Kit - Change Gamescene Variables from FileBrowser ClosureSwift - SKSprite Kit - 从 FileBrowser 闭包中更改游戏场景变量
【发布时间】:2020-08-06 23:15:22
【问题描述】:

我正在开发一个使用“FileBrowser”CocoaPod 在模拟器中加载文件的应用程序(使用 SKSprites 物理引擎)

我的 GameViewController 中有一个函数,它创建一个“FileBrowser”实例,然后允许用户像这样设置它的“didSelectFile”闭包:

let file = FileBrowser()
    present(file, animated: true, completion: nil)

fileBrowser.didSelectFile = { (file: FBFile) -> Void in
print(file.displayName)}

这使我能够在从弹出浏览器中选择文件后触发闭包中的一小段代码,并打印单击的文件的名称,但我不知道如何获取值'file.displayName' 返回到我的 GameScene(我需要将其传递给该类实例以加载文件并更改关卡等)。

我尝试在闭包中添加一个“字符串”返回,但我做不到。我也尝试将我的 GameScene 传递给 Closure,但这不起作用。

那么,如果我无法编辑闭包输入/输出,如何将可在该闭包中检索的数据返回到我的 GameScene? (它们由库定义)。

谢谢

【问题讨论】:

    标签: ios swift xcode skspritenode


    【解决方案1】:

    我解决了我的问题:

    我要做的是给 GameViewController 类一个属性“场景”,然后在“viewDidLoad()”函数中添加:

    self.scene = gameScene
    

    然后在闭包内,我必须添加代码

    let gameScene = self.scene as! GameScene
    

    然后我可以在我的 GameScene 中编辑变量(例如:gameScene.numberofpoints = 100)

    简而言之,我猜想给 GameViewController 类一个“场景”变量来存储游戏场景,然后允许我从闭包中更改这个游戏场景的属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-15
      • 1970-01-01
      • 1970-01-01
      • 2017-02-21
      • 1970-01-01
      • 2018-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多