编辑器扩展总结
工欲善其事必先利其器
引言: 在项目开发中,编辑器扩展为开发者提供了开发自定义工具的功能,让开发者更加便利地使用编辑器开发项目。如若博客中存在错误,还请不吝赐教。所有参考的博客或者视频来源将在文末展示。
开发版本: Unity 2019.4.9f1
相关博客传送门
一、编辑器开发入门
八、EditorPrefs、ScriptableObject、Undo
GUIStyle、GUISkin
GUIStyle的简单使用
GUIStyle用于修改GUI的风格样式,除了适用于编辑器开发,也适用于Unity旧版的UI系统(IMGUI)。GUIStyleu拥有多种属性,可以方便开发者自定义编辑器UI样式。当我们未自定义GUIStyle时,使用的就是unity默认的GUIStyle样式。GUIStyle有点像网页前端开发的层叠样式表CSS,拥有很多状态属性可以调整。(unity2019之后新出的UIElement模块中的USS就更像是CSS了)
示例:
using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(Test))]
public class TestEditor : Editor
{
private GUIStyle _titleStyle;
private void OnEnable()
{
_titleStyle = new GUIStyle();
_titleStyle.fontStyle = FontStyle.Bold;
_titleStyle.fontSize = 20;
}
public override void OnInspectorGUI()
{
//使用Unity默认的Label样式
EditorGUILayout.LabelField("GUIStyle");
//使用自定义的Label样式
EditorGUILayout.LabelField("GUIStyle", _titleStyle);
}
}
GUISkin的简单使用
GUISkin是基本所有样式的集合,可以作为一种配置资源。如果开发者需要自定义大量的GUIStyle,可以通过GUISkin配置资源来定义,并且开发者可以在Inspector面板中直接修改样式。
在Project面板,鼠标右键Create-GUISkin既可以创建。
可以将新建的GUISkin资源放在Editor里的Resources文件内,方便动态加载。
using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(Test))]
public class TestEditor : Editor
{
private GUIStyle _titleStyle;
private void OnEnable()
{
GUISkin skin = Resources.Load("New GUISkin") as GUISkin;
_titleStyle = skin.label;
}
public override void OnInspectorGUI()
{
EditorGUILayout.LabelField("GUIStyle");
EditorGUILayout.LabelField("GUIStyle", _titleStyle);
}
}
接下来,就可以通过GUISkin资源来修改样式效果了。如下修改会得到和之前通过直接修改GUIStyle一样的效果。