Unity Editor 基础篇(三):自定义窗口
生活随笔
收集整理的這篇文章主要介紹了
Unity Editor 基础篇(三):自定义窗口
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
源地址:http://gad.qq.com/article/detail/32207
終極目標using?System.Collections;?? using?System.IO;?? using?UnityEditor;?? using?UnityEditor.SceneManagement;?? using?UnityEngine;?? ///??? ///??? ///??? public?class?MyFirstWindow?:?EditorWindow?{?? ????string?bugReporterName?=?"";?? ????string?description?=?"";?? ????GameObject?buggyGameobject;?? ????MyFirstWindow()?? ????{?? ????????this.titleContent?=?new?GUIContent("Bug?Reporter");?? ????}?? ?? ????[MenuItem("Tool/Bug?Reporter")]?? ????static?void?ShowWindow()?? ????{?? ????????EditorWindow.GetWindow(typeof(MyFirstWindow));?? ????}?? ?? ????void?OnGUI()?? ????{?? ????????EditorGUILayout.BeginVertical();?? ?? ????????GUILayout.Space(10);?? ????????GUI.skin.label.fontSize?=?24;?? ????????GUI.skin.label.alignment?=?TextAnchor.MiddleCenter;?? ????????GUILayout.Label("Bug?Reporter");?? ?? ????????GUILayout.Space(10);?? ????????bugReporterName?=?EditorGUILayout.TextField("Bug?Name",?bugReporterName);?? ?? ?? ????????GUILayout.Space(10);?? ????????GUI.skin.label.fontSize?=?12;?? ????????GUI.skin.label.alignment?=?TextAnchor.UpperLeft;?? ????????GUILayout.Label("Currently?Scene:" EditorSceneManager.GetActiveScene().name);?? ?? ????????GUILayout.Space(10);?? ????????GUILayout.Label("Time:" System.DateTime.Now);?? ?? ????????GUILayout.Space(10);?? ????????buggyGameobject?=?(GameObject)EditorGUILayout.ObjectField("Buggy?Gameobject",?buggyGameobject,typeof(GameObject),true);?? ?? ????????GUILayout.Space(10);?? ????????GUILayout.BeginHorizontal();?? ????????GUILayout.Label("Description",GUILayout.MaxWidth(80));?? ????????description?=?EditorGUILayout.TextArea(description,GUILayout.MaxHeight(50));?? ????????GUILayout.EndHorizontal();?? ?? ?? ????????EditorGUILayout.Space();?? ????????if(GUILayout.Button("Save?Bug"))?? ????????{?? ????????????SaveBug();?? ????????}?? ????????if(GUILayout.Button("Save?Bug?With?Screenshot"))?? ????????{?? ????????????SaveBugWithScreenshot();?? ????????}?? ?? ????????GUILayout.EndVertical();?? ????}?? ????void?SaveBug()?? ????{?? ????????Directory.CreateDirectory("Assets/BugRepots/" bugReporterName);?? ????????StreamWriter?sw?=?new?StreamWriter("Assets/BugRepots/" bugReporterName "/" ?bugReporterName ".txt");?? ????????sw.WriteLine(bugReporterName);?? ????????sw.WriteLine(System.DateTime.Now.ToString());?? ????????sw.WriteLine(EditorSceneManager.GetActiveScene().name);?? ????????sw.WriteLine(description);?? ????????sw.Close();?? ?? ????}?? ????void?SaveBugWithScreenshot()?? ????{?? ????????Directory.CreateDirectory("Assets/BugRepots/" bugReporterName);?? ????????StreamWriter?sw?=?new?StreamWriter("Assets/BugRepots/" bugReporterName "/" ?bugReporterName ".txt");?? ????????sw.WriteLine(bugReporterName);?? ????????sw.WriteLine(System.DateTime.Now.ToString());?? ????????sw.WriteLine(EditorSceneManager.GetActiveScene().name);?? ????????sw.WriteLine(description);?? ????????sw.Close();?? ????????Application.CaptureScreenshot("Assets?/?BugRepots?/?" bugReporterName "?/?" ?bugReporterName "ScreenShot" ".png");?? ????}?? }??
代碼分析?
添加菜單欄選項 - 打開窗口({MenuItem()]下的方法必須為靜太)
EditorSceneManager.GetActiveScen().name,其實就是返回當前編輯的場景信息(也就是返回 Scene 類型參數),然后利用 name 屬性獲取場景的名字,命名空間:using UnityEditor.SceneManagement;
繪制對象槽
繪制描述文本區域
最終效果
最終效果
終極目標
利用學到的東西制作自己的工具(自定義的窗口、Inspector、菜單、插件等等)。
在之前的項目中,找到 Editor 文件夾,然后創建一個新的 C# 腳本,命名為“MyFirstWindow”,然后雙擊打開腳本,添加如下代碼:
代碼分析?
屬性
首先聲明了三個變量:
????1.bugReporterName 用于儲存記錄Bug人的名字
????2.description 用于描述Bug信息
????3.buggyGameObject 用于儲存 Bug 對象
設置窗口的名字
添加菜單欄選項 - 打開窗口({MenuItem()]下的方法必須為靜太)
繪制窗口
????繪制窗口元素需要在 OnGUI() 函數里面設計,接下來我們一一分解。
步驟:
????1.GUILayout.Space(10),這個有說過,讓兩個元素之間空十個像素之間的距離
????2.GUI.skin.label.fontSize 、GUI.skin.label.alignment 用于設置標題的字體大小和對齊格式;
顯示當前正在編輯的場景EditorSceneManager.GetActiveScen().name,其實就是返回當前編輯的場景信息(也就是返回 Scene 類型參數),然后利用 name 屬性獲取場景的名字,命名空間:using UnityEditor.SceneManagement;
繪制對象槽
??1.第一個參數用于設置卡槽的標題名字
????2.第二個參數用于設置字段顯示的物體
????3.第三個參數用于設置顯示的類型
????4.第四個參數用于設置是否允許指定場景中的物件
繪制描述文本區域
最終效果
最終效果
總結
以上是生活随笔為你收集整理的Unity Editor 基础篇(三):自定义窗口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pacman 查询_pacman
- 下一篇: pacman 查询_pacman命令