前言
如何讓一個Gameobject的屬性在運行時,不可以在屬性面板上手動的修改呢?
文檔:http://www.ceeger.com/Script/Enumerations/HideFlags/HideFlags.html
測試環境:Unity 5.3.6f1 (windows x64)
經測試HideFlag對gameobject和自定義都有效,因為此屬性是UnityEngine.Object的,而MonoBehaviour的上層也是繼承於此,所以只要你的腳本直接或間接地繼承MonoBehaviour都是可行的。
關系圖:UnityEngine.Object->Component->Behaviour->MonoBehaviour
Gameobject不可編輯
測試代碼
public class HideFlagTest : MonoBehaviour { // Use this for initialization void Start() { //整個gameobject的屬性面板不可編輯 gameObject.hideFlags = HideFlags.NotEditable; } }
測試效果
gameobject的整個屬性面板都不可編輯
腳本或自帶組件不可編輯
測試代碼
public class HideFlagTest : MonoBehaviour { public int speed = 10; public string desc = "test"; public GameObject target; // Use this for initialization void Start() { gameObject.GetComponent<Camera>().hideFlags = HideFlags.NotEditable; //僅僅是某個腳本的屬性面板不可編輯 gameObject.GetComponent<HideFlagTest>().hideFlags = HideFlags.NotEditable; } }
測試效果
Camera組件和自定義的腳本不可編輯