Unity Editor 编辑器基础
Unity Editor 编辑器基础
CoderZ1010
这个作者很懒,什么都没留下…
展开
-
Unity Editor Window 拖拽调整区域大小
如何在Editor Window 编辑器窗口中拖拽调整某个区域的大小。原创 2023-04-13 13:20:25 · 1092 阅读 · 0 评论 -
Unity【InitializeOnLoadMethod】- 如何在项目工程打开时创建一个窗口
我们在Unity中安装的一些插件、工具,会在工程打开时弹出一个相关介绍的窗口,实现这样的功能需要用到InitializeOnLoadMethod这个特性,官方文档中的介绍:使用了该特性的静态函数会在Unity工程加载时,不需要用户做任何操作,函数将会自动执行,下面是使用该特性实现的一个简单的窗口:代码如下:using UnityEngine;using UnityEditor;public class Example : EditorWindow{ [Initializ原创 2022-03-06 11:14:19 · 3212 阅读 · 0 评论 -
Unity Editor【Open File Panel】- 打开选择文件窗口并记录文件路径
如图所示,在Unity Editor编辑器环境下编写这样一个功能:点击“浏览”按钮,打开一个窗口,选择文件并记录该文件夹的路径:用到的API:EditorUtility类中的OpenFilePanel方法:// 摘要:// Displays the "open file" dialog and returns the selected path name.// 参数:// title://// directory://// extension:publ.原创 2022-03-01 15:19:03 · 3942 阅读 · 1 评论 -
Unity Editor【Open Folder Panel】- 打开选择文件夹窗口并记录文件夹路径
如图所示,在Unity Editor编辑器环境下编写这样一个功能:点击“浏览”按钮,打开一个窗口,选择文件夹并记录该文件夹的路径:用到的API:EditorUtility类中的OpenFolderPanel方法:// 摘要:// Displays the "open folder" dialog and returns the selected path name.// 参数:// title://// folder://// defaultName:[原创 2022-02-28 17:51:41 · 6622 阅读 · 1 评论 -
十三、Unity编辑器开发之AnimBool
在编辑器开发中可以使用AnimBool来为编辑器添加动态效果,下面以foldout的折叠效果为例:首先声明一个AnimBool类型变量,需要在OnEnable函数中对其进行初始化。private AnimBool foldout;private void OnEnable(){ //参数1 bool类型 表示初始值 //参数2 回调函数 设为重新绘制事件 foldout = new AnimBool(false, Repaint);}...原创 2021-10-10 15:33:12 · 1013 阅读 · 0 评论 -
十二、Unity编辑器开发之各类字段及滑动条绘制
1.各类字段:为我们的Test类中添加以下字段:using UnityEngine;public class Test : MonoBehaviour{ public enum TestEnum { Enum1, Enum2, } public string stringValue = "str"; public int intValue = 30; public float floatValue = 50f;原创 2021-05-14 17:16:37 · 1622 阅读 · 1 评论 -
十一、Unity编辑器开发之Toggle
当我们需要切换一个bool值的时候通常需要用到Toggle开关,Toggle的绘制需要用到GUILayout.Toggle或EditorGUILayout.Toggle方法。using UnityEngine;using UnityEditor;[CustomEditor(typeof(Test))]public class TestEditor : Editor{ private bool boolValue; public override void OnInspect原创 2021-05-14 16:20:49 · 3334 阅读 · 0 评论 -
十、Unity编辑器开发之Button
Button按钮的绘制需要用到GUILayout.Button或者EditorGUILayout.Button方法。一、类型按钮的绘制有很多种:1.String类型Button:using UnityEngine;using UnityEditor;[CustomEditor(typeof(Test))]public class TestEditor : Editor{ public override void OnInspectorGUI() {原创 2021-05-14 15:35:32 · 3890 阅读 · 6 评论 -
九、Unity编辑器开发之Gizmos
1.OnDrawGizmos和OnDrawGizmosSelcted方法Gizmos绘制需要Monobehaviour生命周期中的OnDrawGizmos函数,它在生命周期中的位置:using UnityEngine;public class Test : MonoBehaviour{ private void OnDrawGizmos() { }}虽然函数代码块中没有任何实现,但是我们已经可以在Gizmos下拉框中看到Test选项:下面我们来实现一些绘制:原创 2021-05-14 14:23:11 · 5365 阅读 · 0 评论 -
八、Unity编辑器开发之GUILayout布局
1.水平布局在编辑器的开发中,如果我们想将一些GUI元素绘制在一个水平方向上,需要用到GUILayout中的一对方法:GUILayout.BeginHorizontal();// GUI Element1st// GUI Element2nd// GUI Element3rdGUILayout.EndHorizontal();这两个方法一定是成对出现的,有了上述布局后,我们绘制的内容类似于下图:2.垂直布局如果我们想将这些元素绘制在一个垂直方向上,则需要用到GUILayou原创 2021-05-14 11:13:40 · 5308 阅读 · 0 评论 -
七、Unity编辑器开发之PropertyDrawer
PropertyDrawer允许我们控制一个属性的Inspector检视面板的GUI如何绘制。首先看几个Unity中内置的PropertyDrawers:[Range(0, 20)]public int intValue = 10;[Header("名称")]public string nameStr;[SerializeField]private float floatValue = 10f;如图所示,Range可以限制intValue的取值范围0~20,Header可以给原创 2021-05-14 09:45:26 · 3819 阅读 · 2 评论 -
六、Unity编辑器开发之GUIIcon
如图,在GUIIcon窗口列出所有Unity内置的图标:实现:首先,加载以上所有图片,将它们的名称存在一个.txt的文本中 [MenuItem("SKFramework/Editor/GUI/GUI Icon/Load GUIIcon")] private static void LoadGUIIcon() { List<Texture> icons = new List<Texture>(Res原创 2021-05-13 20:41:38 · 941 阅读 · 3 评论 -
五、Unity编辑器开发之GUIStyle
在编辑器开发中会大量用到GUIStyle,为了能够精确的实现想要的样式,将所有的样式列在一个窗口中进行预览,如下:在窗口顶部的Search输入框中输入样式名称的关键字可进行筛选,点击样式左侧的拷贝按钮可将样式名称进行复制。下面为代码,需要放在Editor文件夹中using UnityEngine;using UnityEditor;namespace SK.Framework{ public sealed class GUIStyle : EditorWindow原创 2021-05-13 20:08:26 · 1381 阅读 · 1 评论 -
四、Unity编辑器开发之EditorWindow
Unity的使用,是在不同的编辑器窗口中进行,例如Scene、Game、Project、Hierarchy、Inspector等等,那么如何创建一个自定义的编辑器窗口?首先需要EditorWindow类作为基类,例如我们创建一个ExampleWindow编辑器窗口:using UnityEditor;public class ExampleWindow : EditorWindow {}我们使用MenuItem,创建一个窗口的入口: [MenuItem("Example/Ope原创 2021-02-26 14:12:11 · 3296 阅读 · 0 评论 -
三、Unity编辑器开发之CustomEditor
CustomEditor特性,允许我们自定义组件的Inspect检视面板。public CustomEditor (Type inspectedType);public CustomEditor (Type inspectedType, bool editorForChildClasses);param1: inspectedType 检视的类型,即自定义哪个类型的Inspector。param2: editorForChildClasses 默认为false,为true时表明其子类使用同样原创 2021-02-26 13:32:04 · 4423 阅读 · 0 评论 -
二、Unity编辑器开发之ContextMenu
ContextMenu属性,允许我们在Inspect检视面板对Component组件添加菜单功能。public ContextMenu (string itemName);public ContextMenu (string itemName, bool isValidateFunction);public ContextMenu (string itemName, bool isValidateFunction, int priority);param1: itemName 表示菜单的路径。原创 2021-02-26 10:20:05 · 3872 阅读 · 0 评论 -
一、Unity编辑器开发之MenuItem
MenuItem自定义菜单栏属性,允许我们创建自己的编辑器菜单。public MenuItem (string itemName);public MenuItem (string itemName, bool isValidateFunction);public MenuItem (string itemName, bool isValidateFunction, int priority);param1: itemName 表示菜单项的路径。param2: isValidateFunct原创 2021-02-25 17:00:22 · 2428 阅读 · 0 评论
分享