首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >十二、编辑器开发之Slider及各类字段绘制

十二、编辑器开发之Slider及各类字段绘制

作者头像
CoderZ
发布2022-08-29 15:39:28
发布2022-08-29 15:39:28
4190
举报

为测试脚本Test类中添加以下字段:

代码语言:javascript
复制
using UnityEngine;

public class Test : MonoBehaviour
{
    public enum TestEnum
    {
        Enum1,
        Enum2,
    }
    public string stringValue = "str";
    public int intValue = 30;
    public float floatValue = 50f;
    public AudioClip clipValue;
    public string passwordValue = "1a2s3xd455";
    public TestEnum EnumValue = TestEnum.Enum1;
}

创建Test类的编辑器类TestEditor

1.滑动条

代码语言:javascript
复制
using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(Test))]
public class TestEditor : Editor
{
    private Test Target;
    private void OnEnable()
    {
        Target = target as Test;
    }

    public override void OnInspectorGUI()
    {
        //绘制Int类型滑动条
        int newIntValue = EditorGUILayout.IntSlider("Int Value", Target.intValue, 0, 30);
        if (newIntValue != Target.intValue)
        {
            Target.intValue = newIntValue;
        }
        //绘制Float类型滑动条
        float newFloatValue = EditorGUILayout.Slider("Float Value", Target.floatValue, 0f, 100f);
        if (newFloatValue != Target.floatValue)
        {
            Target.floatValue = newFloatValue;
        }
    }
}

2.各类字段:

代码语言:javascript
复制
using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(Test))]
public class TestEditor : Editor
{
    private Test Target;
    private void OnEnable()
    {
        Target = target as Test;
    }

    public override void OnInspectorGUI()
    {
        //绘制String类型字段
        string newStringValue = EditorGUILayout.TextField("String Value", Target.stringValue);
        if (newStringValue != Target.stringValue)
        {
            Target.stringValue = newStringValue;
        }
        //绘制Int类型字段
        int newIntValue = EditorGUILayout.IntField("Int Value", Target.intValue);
        if (newIntValue != Target.intValue)
        {
            Target.intValue = newIntValue;
        }
        //绘制Float类型字段
        float newFloatValue = EditorGUILayout.FloatField("Float Value", Target.floatValue);
        if (newFloatValue != Target.floatValue)
        {
            Target.floatValue = newFloatValue;
        }
        //绘制Object类型字段 通过as转化为其它类型
        AudioClip newClipValue = EditorGUILayout.ObjectField("AudioClip Value", Target.clipValue, typeof(AudioClip), false) as AudioClip;
        if (newClipValue != Target.clipValue)
        {
            Target.clipValue = newClipValue;
        }
        //绘制密文类型的String字段
        string newPasswordValue = EditorGUILayout.PasswordField("Password Value", Target.passwordValue);
        if(newPasswordValue != Target.passwordValue)
        {
            Target.passwordValue = newPasswordValue;
        }
        //绘制枚举类型字段
        Test.TestEnum newEnumValue = (Test.TestEnum)EditorGUILayout.EnumPopup("Enum Value", Target.EnumValue);
        if (newEnumValue != Target.EnumValue)
        {
            Target.EnumValue = newEnumValue;
        }
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 当代野生程序猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档