6.0使用GUIStyle和GUISkin

2021-02-18  本文已影响0人  莫忘初心_倒霉熊

使用GUIStyle

首先创建一个Level脚本,用于自定义Inspector Editor。

using UnityEngine;

public class Level : MonoBehaviour
{
}

首先使用默认的GUIStyle,Inspector Editor代码如下:

using UnityEditor;
using UnityEngine;

[CustomEditor(typeof(Level))]
public class LevelInspector :Editor
{
    private Level _myTarget;
    private void OnEnable()
    {
        _myTarget = (Level)target;
    }        
    public override void OnInspectorGUI()
    {
        EditorGUILayout.LabelField("Data");
    }
}

效果如图:


默认的GUIStyle

使用我们自定义的GUIStyle,代码如下:

using UnityEditor;
using UnityEngine;

[CustomEditor(typeof(Level))]
public class LevelInspector :Editor
{
    public GUIStyle _titleStyle;
    
    private Level _myTarget;
    private void OnEnable()
    {
        _myTarget = (Level)target;
        InitStyles();
    }        
    public override void OnInspectorGUI()
    {
        EditorGUILayout.LabelField("Data",_titleStyle);
    }
    private void InitStyles()
    {
        _titleStyle = new GUIStyle();
        //字体居中
        _titleStyle.alignment = TextAnchor.MiddleCenter;
        //字号16
        _titleStyle.fontSize = 16;
        
        Texture2D titleBg = Resources.Load<Texture2D>("Color_Bg");
        Font titleFont = Resources.Load<Font>("Oswald-Regular");
        //normal状态下背景
        _titleStyle.normal.background = titleBg;
        //normal状态下的字体颜色
        _titleStyle.normal.textColor = Color.white;
        //设置字体
        _titleStyle.font = titleFont;
        //设置九宫格
        _titleStyle.border = new RectOffset(10, 10, 20, 20);
    }
}

资源文件如下:


资源文件

图片格式设置为Editor GUI and legacy GUI,如图:


图片格式设置
最终效果如图:
自定义的GUIStyle

使用GUISkin

创建一个GUISkin资源,右键菜单点击GUI Skin。


创建一个GUISkin

将创建出来的GUI Skin做如下修改:


修改GUISkin
代码如下:
using UnityEditor;
using UnityEngine;

[CustomEditor(typeof(Level))]
public class LevelInspector :Editor
{
    public GUIStyle _titleStyle;
    
    private Level _myTarget;
    private void OnEnable()
    {
        _myTarget = (Level)target;
        GUISkin guiSkin = Resources.Load<GUISkin>("LevelCreatorSkin");
        _titleStyle = guiSkin.label;
    }        
    public override void OnInspectorGUI()
    {
        EditorGUILayout.LabelField("Data",_titleStyle);
    }
}

效果如图:


GUISkin效果图

关于GUI Style与GUISkin的区别,可以看看这个https://blog.csdn.net/sunny__chen/article/details/51323265

上一篇下一篇

猜你喜欢

热点阅读