勇哥注:
game4automatic的Lamp灯,居然不在播放的时候,也会有一闪一闪的效果。
显示,它在编辑器的状态也在执行中。这是怎么做到的?
在Unity中,有几种方法可以让脚本在未播放场景时运行:
(1)使用ExecuteInEditMode属性:
在脚本的类定义前添加[ExecuteInEditMode]属性,可以使脚本在Unity编辑器中运行,而不需要播放场景。
例如:
using UnityEngine;
[ExecuteInEditMode]
public class Test : MonoBehaviour
{
private void OnDisable() { Debug.Log("Test PrintOnDisable: script was disabled"); }
private void OnEnable() { Debug.Log("Test PrintOnEnable: script was enabled"); }
}当挂载这个脚本的物体取消激活状态时,脚本仍然会运行1。
(2)使用RuntimeInitializeOnLoadMethod属性:
在脚本的方法前添加[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)]属性,
可以使该方法在程序运行时执行,而不需要挂载到任何游戏对象上。
例如:
using UnityEngine;
public static class Initialization
{
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)]
public static void DoMethod()
{
GameObject go = GameObject.Find("GameObject/YYY");
Debug.Log("GO:" + go);
Debug.Log("It's the start of the game");
}
}这样,该方法会在每次进入Play模式时运行,而不需要挂载到Unity场景中的对象。
详细可见unity的在线手册的介绍:
https://docs.unity3d.com/cn/2019.2/ScriptReference/ExecuteAlways.html


少有人走的路



















