Unity 编辑器扩展
Unity 编辑器扩展
lrh3025
游戏
展开
-
拓展编辑器 11 - 自定义脚本模板
项目中,我们可能定义了代码框架,很多代码文件使用的是同样的模板,每次创建代码,把相同的代码敲一遍,或者从其它文件赋值,都是件麻烦的事。解决这个问题,我们可以自定义模板文件,并添加创建菜单,这样可以像 MonoBehaviour 一样方便地创建我们自己的模板格式的代码文件。基本思想:创建模板文件,放在 Assets/Editor/ScriptTemplates/ 目录下,并对模板文本定义替换...原创 2019-12-31 22:42:22 · 158 阅读 · 0 评论 -
拓展编辑器 10 - 自定义资源导入
unity为我们提供了自定义资源导入的流程,通过该流程,我们可以对导入的资源进行检查,及预处理,比如检查贴图是否是2的n次幂,设置贴图参数,创建预制等对unity无法识别的资源,加入导入流程方法:派生 ScriptedImporter,并实现 OnImportAsset() 方法。例子using UnityEngine;using UnityEditor;using UnityE...原创 2019-12-28 19:28:56 · 293 阅读 · 0 评论 -
拓展编辑器 9 - 查找静态引用的资源(预制)
游戏运行过程中,由于逻辑过于复杂,可能会有资源被静态变量引用,无法释放,我们需要找到静态引用资源的变量,来定位问题。基本原理时,获取我们的脚本的 dll (Assembly-CSharp) 的所有类型,找到所有的静态变量成员,如果成员是UnityEngine.Object 类型,收集依赖数据,最后将该静态变量以用的资源打印出来静态引用脚本代码,将该脚本添加到GameObject ,可以测试检查...原创 2019-12-28 19:21:51 · 124 阅读 · 0 评论 -
拓展编辑器 8 - PreviewView
Inspector 窗口下方的 preview 窗口也可以扩展,绘制自己的 GUI。方法:继承 ObjectPreview,并声明 [CustomPreview(typeof(GameObject))]。using UnityEngine;using UnityEditor;/// <summary>/// 扩展选中对象后的预览窗口/// </summary>...原创 2019-12-28 19:07:40 · 294 阅读 · 1 评论 -
拓展编辑器 7 - 自定义窗口 EditorWindow
开发者可以通过派生 EditorWindows 绘制完全自定义的窗口。使用 EditorWindow.GetWindow()来打开窗口,在OnGUI中进行绘制。通过实现 IHasCustomMenu 来添加菜单例子:using UnityEngine;using UnityEditor;/// <summary>/// 自定义窗口/// </summary>...原创 2019-12-28 18:57:07 · 431 阅读 · 0 评论 -
拓展编辑器 6 - GameView
Game 视图也可以扩展,主要是可以指定 [ExeuteInEditMode] 来指定在非运行时调用这个比较简单,直接贴个代码吧using UnityEngine;[ExecuteInEditMode] // 之时编辑模式下也执行public class GameViewExtend : MonoBehaviour{#if UNITY_EDITOR private void...原创 2019-12-28 18:19:27 · 241 阅读 · 0 评论 -
拓展编辑器 5 - SceneView
关键概念void MonoBehaviour.OnDrawGizmosSelected() : 为选中的,当前类型的 MonoBehaviour 绘制辅助元素。void MonoBehaviour.OnDrawGizmos() : 为所有的当前类型的 MonoBehaviour 绘制辅助元素。Gizmos : 绘制接口Gizmos.color : 指定绘制颜色Gizmos.DrawC...原创 2019-12-28 18:13:23 · 665 阅读 · 0 评论 -
拓展编辑器 4 - InspectorWindow
关键概念[CustomEditor typeof(ComponentType)]: 修饰,指定派生自Editor 的类为 ComponentType 类型的编辑器控制类。Editor : 派生改类,为 object 实现自定义的 Inspector 或 editor 界面。Editor.OnInspectorGUI : 覆写 Inspector 绘制GUILayout.Button : ...原创 2019-12-28 17:17:42 · 264 阅读 · 0 评论 -
拓展编辑器 3 - HierarchyWindow
关键概念[MenuItem(“GameObject/XXX”)] : 创建左上角的 Create 菜单项。如果跟已有的路径相同,将覆盖已有功能。EditorApplication.hierarchyWindowItemOnGUI : 委托,处理 hierarchy 窗口对象的绘制。签名:void OnGUI(int instanceID, Rect selectionRect)。int ...原创 2019-12-28 16:48:15 · 199 阅读 · 0 评论 -
拓展编辑器 2 - ProjectWindow
扩展鼠标选中的资源项关键概念:[InitializeOnLoadMethod] : 该修饰告诉 Unity ,被修饰的方法在脚本编译完后首先调用。必须时静态方法。MenuItem(“Asset/XXX”) : 右键菜单。[MenuItem(“Asset/Create/XXX”)] : 右键菜单,以及在窗口左上角的 Create菜单显示。EditorApplication....原创 2019-12-28 16:18:27 · 502 阅读 · 0 评论 -
拓展编辑器 1 - 菜单 MenuItem
菜单 MenuItem官方文档连接MenuItem修饰可以让我们对菜单进行扩展,同时,该修饰只能用在静态方法上。格式:public MenuItem(string itemName, bool isValidateFunction, int priority)参数含义:itemName:菜单路径,以 “/” 分隔。如"Window/MyFunc",表示将菜单添加到 Window 下...原创 2019-12-28 11:20:16 · 234 阅读 · 0 评论