轉載自:http://www.xuanyusong.com/archives/2303
Scene視圖是編輯游戲模型的地方姥敛,其實它還可以進行編輯丢氢。如下圖所示,我給Scene視圖做了簡單的編輯懂酱。
Scene視圖的拓展是基于對象的逛裤,意思就是你必須在Hierarchy視圖中選擇一個對象才行。Hierarchy視圖中選擇不同的對象可以有不同的Scene視圖启涯。圖中我們創(chuàng)建了一個立方體對象贬堵,接著給它綁定一個腳本。
Test.cs 是個空空的腳本结洼。
Scene視圖是編輯游戲模型的地方黎做,其實它還可以進行編輯。如下圖所示松忍,我給Scene視圖做了簡單的編輯蒸殿。
Scene視圖的拓展是基于對象的,意思就是你必須在Hierarchy視圖中選擇一個對象才行鸣峭。Hierarchy視圖中選擇不同的對象可以有不同的Scene視圖宏所。圖中我們創(chuàng)建了一個立方體對象,接著給它綁定一個腳本摊溶。
Test.cs 是個空空的腳本爬骤。
C#
usingUnityEngine;
usingSystem.Collections;
publicclassTest:MonoBehaviour
{
}
**然后在Project視圖中創(chuàng)建一個Editor文件夾,把MyEditor.cs放進去莫换。 **
C#
usingUnityEditor;
usingUnityEngine;
//自定義Tset腳本
[CustomEditor(typeof(Test))]
//請繼承Editor
publicclassMyEditor:Editor
{
voidOnSceneGUI()
{
//得到test腳本的對象
Test test=(Test)target;
//繪制文本框
Handles.Label(test.transform.position+Vector3.up*2,
test.transform.name+" : "+test.transform.position.ToString());
//開始繪制GUI
Handles.BeginGUI();
//規(guī)定GUI顯示區(qū)域
GUILayout.BeginArea(newRect(100,100,100,100));
//GUI繪制一個按鈕
if(GUILayout.Button("這是一個按鈕!"))
{
Debug.Log("test");
}
//GUI繪制文本框
GUILayout.Label("我在編輯Scene視圖");
GUILayout.EndArea();
Handles.EndGUI();
}
}
** 此時霞玄,你可以把之前的Test.cs腳本綁定在任意對象身上,然后在Hierarchy視圖中點擊對象即可在Scene視圖中看到編輯的視圖啦拉岁。**
最后我在說一下溃列,在OnSceneGUI()中只能通過Handles來繪制新視圖,如果你想引入GUI的元素哪么就需要使用BeginGUI()和EndGUI()組合的使用膛薛。 Handles還提供了很多編輯視圖的方式,詳細信息大家請看API http://docs.unity3d.com/Documentation/ScriptReference/Handles.ArrowCap.html 這里我就不在贅述补鼻。 **
本文下載地址:http://vdisk.weibo.com/s/AB2i-
** 今天我同事問我哄啄,上面的方法雅任,必須鼠標選中才可以顯示,能不能不選中也能顯示咨跌?
http://answers.unity3d.com/questions/44771/labeling-objects-in-the-scene-editor-view.html
把下面的代碼放在Editor目錄下即可沪么。
C#
usingUnityEngine;
usingSystem.Collections;
usingUnityEditor;
publicclassNewBehaviourScript:Editor{
[DrawGizmo(GizmoType.SelectedOrChild|GizmoType.NotSelected)]
staticvoidDrawGameObjectName(Transform transform,GizmoType gizmoType)
{
Handles.Label(transform.position,transform.gameObject.name);
}
}