unity3D 编辑器扩展,GUISkin/GUIStyle的简单使用

GUISkin是基本所有样式的集合,可以作为一种配置资源。如果开发者需要自定义大量的GUIStyle,可以通过GUISkin配置资源来定义,并且开发者可以在Inspector面板中直接修改样式。

Unity 中的GUI Skin

在Unity中有提供很多的 GUIStyle ,在Project面板,鼠标右键 Create -> GUI Skin 既可以创建。

这里可以查看Unity所有的 GUIStyle 以及它们的属性,

在项目中如何使用。

使用方法1:

可以将新建的GUISkin资源放在Editor里的Resources文件内,方便动态加载。

在编辑器中修改Box的这两个属性

在代码中使用

using UnityEngine;
using UnityEditor;

public class TestWnd : EditorWindow
{
    [MenuItem("Tools/Test窗口")]
    public static void OpenWnd()
    {
        TestWnd wnd = EditorWindow.GetWindow<TestWnd >(false, "Test");
        //wnd.autoRepaintOnSceneChange = true;
        wnd.minSize = new Vector2(400, 400);
        wnd.Repaint();
        wnd.Show();
        //wnd.Close();
    }

    private GUIStyle _boxStyle;
    private void OnEnable()
    {
        GUISkin skin = Resources.Load("New GUISkin") as GUISkin;
        _boxStyle = skin.box;
    }

    /// <summary>
    /// 在Unity编辑器 窗口类中调用(EditorWindow)
    /// </summary>
    private void OnGUI()
    {
        GUILayout.Label("使用默认的 GUIStyle");
        GUILayout.Label("使用自定义的GUIStyle", _boxStyle);
        // 使用Unity 提供的GUIStyle Box 
        GUILayout.Label("使用Unity 提供的GUIStyle Box", "box", GUILayout.Width(Screen.width - 10));
    }
}

实现效果:

接下来,就可以通过GUISkin资源来修改样式效果了。

其他的GUIStyle要修改样式,直接修改 GUIStyle 的属性就可以了;

使用方法2:

代码创建,不用在Project面板中创建 GUI Skin 资源。

在上面可以看到每种 GUIStyle 的属性都包含name字段,如Box类型的属性字段name="box",代码中就可以利用这字段来创建自定义的GUIStyle

// 创建一种自定义的GUIStyle,它的模板为Box。然后就可以修改自定义的GUIStyle中的属性了。
GUIStyle mysytle = new GUIStyle("box");
mysytle.fontStyle = FontStyle.Bold;

详细代码

    /// <summary>
    /// 在Unity编辑器 窗口类中调用(EditorWindow)
    /// </summary>
    private void OnGUI()
    {
        // 使用Unity 提供的GUIStyle Box 
        GUILayout.Label("测试 1:Unity 提供的GUIStyle Box", "box", GUILayout.Width(Screen.width - 10));

        // 利用Unity的GUIStyle Box 创建新的GUIStyle
        GUIStyle myboxsytle = new GUIStyle("box");
        myboxsytle.fontStyle = FontStyle.Bold;
        myboxsytle.fontSize = 15;
        myboxsytle.normal.textColor = Color.white;
        myboxsytle.alignment = TextAnchor.MiddleLeft;
        GUILayout.Label("测试 2:新创建的GUIStyle,fontSize = 15,Color.white,TextAnchor.MiddleLeft", myboxsytle, GUILayout.Width(Screen.width - 10));

        myboxsytle.fontStyle = FontStyle.Italic;
        myboxsytle.fontSize = 13;
        myboxsytle.normal.textColor = Color.red;
        myboxsytle.alignment = TextAnchor.MiddleRight;
        GUILayout.Label("测试 3:新创建的GUIStyle,fontSize = 13,Color.red,TextAnchor.MiddleRight", myboxsytle, GUILayout.Width(Screen.width - 10));

        //验证myboxsytle与Unity提供的box不是同一个GUIStyle
        GUILayout.Label("测试 4:Unity 提供的GUIStyle Box", "box", GUILayout.Width(Screen.width - 10));
    }

效果图如下:

 

 

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值