我正在用SceneKit
控制的三个VC构建NavigationController
游戏。
尝试找出存储球员详细信息(设置和得分)的最佳方法。每个VC都应该更新玩家的详细信息。
我已经通过单独的Model类实现了MVC
方法,以检索游戏数据。
有:
MainViewController
,具有字符选择功能,并链接到其他两个屏幕(+链接到帮助屏幕)
GameViewController
,带有SceneKit View和Scene和SpriteKit
HUD覆盖。
SettingsViewController
以及球员成绩和设置。
我正在考虑实现Player类,以保存每个VC应该可以访问的所有玩家详细信息。
当VC使用segue进行转换时,我应该通过委托将更新的信息传递给玩家还是更新目标VC。
这里有部分答案: How to build a multilevel game in SceneKit
但是我不确定这是否仍然是最好的方法。
对此进行了更多研究,并找到了可能对他人有用的潜在解决方案。
这基于用于在视图控制器之间传播状态的依赖注入。
以下两篇文章对此进行了很好的描述
Matteo Manferdini: https://code.tutsplus.com/tutorials/the-right-way-to-share-state-between-swift-view-controllers--cms-28474
和Andy Obusek: http://cleanswifter.com/dependency-injection-with-storyboards/
答案 0 :(得分:0)
我还没有看到任何关于此的文章...希望对您有帮助。
我使用数据类(sharedInstance)并将全局变量存储在那里。我使用委托在视图控制器之间进行通信。通常,我只是在代表中传递游戏状态或菜单选项。
很大程度上取决于复杂性,当然,我尽可能地纯洁,但是在一个真实的游戏(不是示例代码)中,事情可能变得很繁琐。您经常要处理许多需要互相交谈的对象,例如您的玩家可能需要与玩家和其他对象交谈。循环,线程问题,声音引擎,游戏状态-发生了很多事情,没有sharedInstance很难做到。
如果您能够获得完美的设计,那真是太好了-做到这一点的人一定很满意,但是我尝试获得80%的设计,并使用全局变量解决一次性问题。