Game视图输出的是最终的游戏画面,理论上是不需要拓展的,不过Unity也可以对其进行拓展。它的拓展主要分为两种:运行模式下以及非运行模式下。
游戏挂在游戏对象后,需要运行游戏才可以执行脚本的生命周期,不过非运行模式下其实也可以执行脚本,比如,Game视图在非运行模式下也可以绘制GUI。其原理就是在脚本类名上方声明[ExecuteInEditMode],表示此脚本在编辑模式中生效。代码如下所示:
using UnityEngine; #if UNITY_EDITOR [ExecuteInEditMode] public class 拓展Game视图 : MonoBehaviour { private void OnGUI() { if (GUILayout.Button("Click")) { Debug.Log("click!!"); } GUILayout.Label("Hello World!"); } } #endif
如代码所示,在类上面标记[ExecuteInEditMode],表示非运行模式下也会执行代码的声明周期,接着在OnGUI()方法中就可以绘制元素了。此外,此类脚本通常只是用来做编辑器,正式发布后是不需要的,此时可以用UNITY_EDITOR条件编译发布后剥离掉。
效果如下: