Unity自帶了一個EditorOnly的Tag拓颓。意思就是標(biāo)記過這個游戲?qū)ο蠼部玻辉贓ditor下生效不會被最終打進(jìn)包里。這個功能其實(shí)很必要政己,但是可能被很多團(tuán)隊都遺忘了酌壕。
例如:美術(shù)做的場景需要一些攝像機(jī)、角色歇由、特效來進(jìn)行輔助參照卵牍。這些東西單純只是用來參照的,并不希望打進(jìn)游戲包中沦泌。但是開發(fā)階段又不能再場景中刪除糊昙,因?yàn)閳鼍靶薷暮竺佬g(shù)還是希望有參照物進(jìn)行預(yù)覽。
這一類東西谢谦,就非常適合標(biāo)記成EditorOnly释牺,但是這個Tag有個致命的缺陷-“無法預(yù)覽” 因?yàn)閳鼍暗臇|西非常多,我們必須要很清楚的看到回挽,那些是標(biāo)記了EditorOnly的游戲?qū)ο竺涣偛荒苁謩拥囊粋€個找吧。
所以有了下面的這個腳本厅各。(掛在某個對象上即可)
#if UNITY_EDITOR
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
public class EditorOnly : MonoBehaviour {
[HideInInspector]
public string tag = "Untagged";
void OnDrawGizmos()
{
foreach (GameObject go in GameObject.FindGameObjectsWithTag(tag)) {
UnityEditor.Handles.Label(go.transform.position, tag);
}
}
}
[CustomEditor(typeof(EditorOnly))]
public class EditorOnlyEditor:Editor{
public override void OnInspectorGUI ()
{
base.OnInspectorGUI ();
EditorOnly gizmos = target as EditorOnly;
EditorGUI.BeginChangeCheck ();
gizmos.tag = EditorGUILayout.TagField("Tag for Objects:", gizmos.tag);
if (EditorGUI.EndChangeCheck ()) {
EditorUtility.SetDirty (gizmos);
}
}
}
#endif
如下圖所示镜撩,選擇tag以后就可以直接在SceneView視圖中查看到那些是當(dāng)前選中的Tag了。
這是自定義的Gizmos功能队塘。如果想再SceneView中整體隱藏袁梗,如下圖所示,勾掉它即可憔古。