使用Xcode 8,swift 3和我使用启用了实体的游戏模板创建iOS应用程序。我注意到我看到一些初始精灵的双节点数,即使我只使用过addChild一次。
我添加了
override func sceneDidLoad() {
print(#function) ... }
代码,不知道为什么会被调用两次。
日志文件......
2016-09-20 10:21:31.482 MMDecon1[3295:791435] SKUtil.m: MGGetBoolAnswer is not available in the simulator.
sceneDidLoad()
sceneDidLoad()
我添加了
override func didMove(to view: SKView) {..}
并将我的初始化代码放在此处作为临时修复。
是否有人知道为什么使用实体使用默认游戏应用代码触发sceneDidLoad()两次?
答案 0 :(得分:1)
通常,sceneDidLoad只被调用一次。但是,如果发送了内存警告,则UIViewController会释放其场景,并在视图控制器不可见时将其设置为nil。下次出现场景时,视图控制器将重新加载场景并再次调用sceneDidLoad。
您必须假设可以多次调用sceneDidLoad。
实施didReceiveMemoryWarning并记录或设置断点以查看发生的情况。