我正在XCode 7中使用Swift 2制作一个a游戏。我有一个变量,希望从开始屏幕传递(它是一个UIViewController)添加到游戏场景(这是一个SKScene)。我想让玩家在一个UIView中选择一个角色,然后在SKScene中玩它。我还想让SKScene中的分数显示在游戏结束屏幕上,这是一个UIView。我'我看过在两个UIViewController之间和两个SKScene之间传递数据的教程,但是没有一个适合这种情况。
如何将变量从UIViewController传递到SKScene(反之亦然)?
3条答案
按热度按时间0dxa2lsx1#
昨天我又碰到了同样的问题。
Swift 5.2,xcode 12,目标iOS 14。上下搜索。最终找到了SKScene的userData属性。
注:该应用程序基于SwiftUI,SKScene位于UIViewRepresentable内:
我并不是要将绑定传递到视图中--这包含了许多我希望场景可以使用的数据项。
我在两个地方放置了代码来填充skScene.userData:
然后,在skScene对象中,我能够检索userData值:
如果在userdata中设置了“running”布尔值(Bool值),则会绘制一个“脉动”的圆。
kyks70gy2#
如果你还没有找到答案,我确实找到了一种方法,我正在做一些非常相似的事情。
在我的例子中,我有一个UIView,它作为一个暂停菜单从我的场景中调用。我使类和变量名更加模糊,以便它们也能应用于您的情况。
下面是我的场景的相关部分。
在您的情况下,听起来第一个屏幕是UIView,第二个屏幕是SKScene。
你可以先制作SKScene,暂停它,然后在场景前面添加UIView。一旦角色被选中,你就可以删除UIView并将角色添加到场景中。
我希望这能回答你的问题。如果它没让我知道。
dgenwo3n3#
从关卡选择场景:
在游戏场景中: