前言
如何让一个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组件和自定义的脚本不可编辑