Inspector视图中的所有组件,如果想展开必须用鼠标点击一下左上角的小箭头。昨天有朋友问我能不能通过脚本来动态展开或者关闭。
可以用反射来做直接上代码~
using UnityEngine; using System.Collections; using UnityEditor; using System.Reflection; using System; publicclassMyEditor:Editor { [MenuItem("Test/Test")] staticvoidStart() { vartype=typeof(EditorWindow).Assembly.GetType("UnityEditor.InspectorWindow"); varwindow=EditorWindow.GetWindow(type); FieldInfo info=type.GetField("m_Tracker",BindingFlags.NonPublic|BindingFlags.Instance); ActiveEditorTracker tracker=info.GetValue(window) asActiveEditorTracker; for(inti=0;i<tracker.activeEditors.Length;i++) { //可以通过名子单独判断组件展开或不展开 if(tracker.activeEditors[i].target.GetType().Name!="NewBehaviourScript") { //这里1就是展开,0就是合起来 tracker.SetVisible(i,1); } } } }
如下图所示,我的组件都展开了。 OK!