Swift - SKSprite Kit - изменение переменных Gamescene из закрытия FileBrowser - PullRequest
0 голосов
/ 07 августа 2020

Я работаю над приложением, которое использует CocoaPod FileBrowser для загрузки файлов в симулятор (используя SKSprites Physics Engine)

У меня есть функция в моем GameViewController, которая создает экземпляр FileBrowser, затем позволяет пользователю установить его закрытие didSelectFile следующим образом:

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

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

Это позволяет мне запускать этот небольшой фрагмент кода в закрытии после того, как файл был выбран во всплывающем браузере, и печатать имя файла, по которому щелкнули, но я не могу понять, как вернуть значение 'file.displayName' обратно в мою GameScene (мне нужно, чтобы оно было передано этому экземпляру класса, чтобы загрузить файл и изменить уровень и т. c).

Я пробовал добавить возврат String к закрытию, но не могу. Я также пытался передать свою GameScene в Closure, но это не сработало.

Итак, как мне получить данные, которые можно получить в этом закрытии, обратно в мою GameScene, если я не могу редактировать входы закрытия / выходы? (они определены библиотекой).

Спасибо

1 Ответ

0 голосов
/ 08 августа 2020

Я решил свою проблему:

Что мне нужно было сделать, так это дать классу GameViewController свойство 'scene', а затем добавить внутрь функции «viewDidLoad ()»:

self.scene = gameScene

затем внутри закрытия мне пришлось добавить код

let gameScene = self.scene as! GameScene

Затем я мог редактировать переменные в моем GameScene (например, gameScene.numberofpoints = 100)

Короче говоря, я угадайте, присвоив классу GameViewController переменную 'scene' для хранения игровой сцены, а затем позволил мне изменить атрибуты этой gameScene внутри закрытия.

...