以前我只能做一个初始化场景, 在这个场景进行初始化工作, 并且保证这个场景在游戏运行中只能进一次。现在好了,unity5提供了初始化回调方法。[RuntimeInitializeOnLoadMethod] 这样初始化就和传统游戏开发初始化一样了。 没有场景 没有 游戏对象 的初始化 启动脚本。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using UnityEngine; using System.Collections; using System.Runtime.Hosting; public class Instance : MonoBehaviour { [RuntimeInitializeOnLoadMethod] static void Initialize() { GameObject.DontDestroyOnLoad(new GameObject("Instance",typeof(Instance)) { hideFlags = HideFlags.HideInHierarchy }); Debug.Log( "RuntimeInitializeOnLoadMethod" ); } } |
- 本文固定链接: https://www.xuanyusong.com/archives/3678
- 转载请注明: 雨松MOMO 于 雨松MOMO程序研究院 发表
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!
查了一下官方文档,这个新增的属性[RuntimeInitializeOnLoadMethod]的作用是可以让不继承自MonoBehaviour的脚本内被该属性标记过的方法在场景加载后自动执行。并且经过测试,被该属性标记过的方法的执行顺序并不会提前于其他脚本的Awake方法,但就一次测试结果而言要早于Start方法。
那这段和我把初始化放在AWAKE或者START里有什么区别?
意思是说这个是在场景初始化之前?
当然不是。 这个是第一场景load完后的一帧执行。