ios - SpriteKit 中的 init() vs didMove vs sceneDidLoad
问题描述
我知道在 SpriteKit 中创建场景有 3 种方法,init()、didMove 和 sceneDidLoad。
但我无法理解将这三种方式分开。阅读其他问题,我了解调用的顺序是 init -> SceneDidLoad -> didMove。
我怎样才能有效地使用它们?
解决方案
您对调用这些函数的顺序是正确的。但init(size:)
实际上只是创建了一个场景。
init(size:)CGSize
用给定的边界初始化一个新的场景对象。在场景变得可见之前必须设置的任何东西都应该在这里发生。这是重要的一点,因为新初始化的场景在视图呈现之前对用户是不可见的。
sceneDidLoad()被调用的结果是,init(size:)
并且可用于在呈现场景之前进行所需的任何其他设置。init(size:)
可以从您想要制作新场景的任何地方调用,但sceneDidLoad()
发生在场景本身中。这对于您希望此类的所有场景都使用的任何设置都很有用。
didMove(to:)不同,因为它与初始化无关。当场景由视图呈现时调用此函数。基本上,当它对用户可见时。场景内元素的 UI 调整和布局通常在此处处理。
推荐阅读
- ruby-on-rails - 提交表单后,Rails 意外路由到索引
- c - OpenAL / Webassembly:如何使用捕获的音频数据
- c# - ASP.NET MVC 应用程序因空异常错误而失败
- javascript - 使用 content-security-policy 从 javascript 脚本上传文件
- php - 如何在laravel中获取工厂中的数组以及数组到字符串转换错误?
- reactjs - 图像未显示在 TabBarIcon 中
- c# - 串口读取未定义长度
- java - 如何修复我的“非法类型开头”和“
我的退货声明中出现预期的“错误? - elasticsearch - grafana elasticsearch 数据源配置
- android - 从 Xamarin Android 中的资源文件获取 StreamReader