您当前的位置: 首页 >  unity

CoderZ1010

暂无认证

  • 2浏览

    0关注

    168博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

十、Unity编辑器开发之Button

CoderZ1010 发布时间:2021-05-14 15:35:32 ,浏览量:2

Button按钮的绘制需要用到GUILayout.Button或者EditorGUILayout.Button方法。

一、类型

按钮的绘制有很多种:

1.String类型Button:

using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(Test))]
public class TestEditor : Editor
{
    public override void OnInspectorGUI()
    {
        GUILayout.Button("按钮");
    }
}

2.Icon图标类型Button:

using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(Test))]
public class TestEditor : Editor
{
    public override void OnInspectorGUI()
    {
        //用到的是Unity内置的播放样式的图标
        GUILayout.Button(EditorGUIUtility.IconContent("PlayButton"));
    }
}

3.String + Icon类型图标:

using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(Test))]
public class TestEditor : Editor
{
    public override void OnInspectorGUI()
    {
        //用到的是Unity内置的播放样式的图标
        GUILayout.Button(EditorGUIUtility.TrTextContent("播放", string.Empty, "PlayButton"));
    }
}

二、样式

Button的样式可以多种多样,下面列举几种样式:

using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(Test))]
public class TestEditor : Editor
{
    public override void OnInspectorGUI()
    {
        GUILayout.Button("按钮1", "ToolbarButton");
        GUILayout.Button("按钮2", "DropDownButton");
        GUILayout.Button("按钮3", "LargeButton");
        GUILayout.Button("按钮4", "IN EditColliderButton");
    }
}

更多样式的预览方法可以查看前面的文章-编辑器开发之GUIStyle

三、大小

可以通过GUILayout.Width及GUILayout.Height来控制大小:

using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(Test))]
public class TestEditor : Editor
{
    public override void OnInspectorGUI()
    {
        GUILayout.Button("按钮1", GUILayout.Width(40));
        GUILayout.Button("按钮2", GUILayout.Width(50));
        GUILayout.Button("按钮3", GUILayout.Width(60));
        GUILayout.Button("按钮4", GUILayout.Width(70), GUILayout.Height(40));
    }
}

四、交互

GUILayout.Button()方法的返回值表示该按钮是否被点击,所以只需要if判断:

using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(Test))]
public class TestEditor : Editor
{
    public override void OnInspectorGUI()
    {
        if (GUILayout.Button("按钮"))
        {
            Debug.Log("点击了按钮.");
        }
    }
}

点击按钮即可执行if代码块中的逻辑。

关注
打赏
1653184800
查看更多评论
立即登录/注册

微信扫码登录

0.1645s