您当前的位置: 首页 >  unity

CoderZ1010

暂无认证

  • 5浏览

    0关注

    168博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

十二、Unity编辑器开发之各类字段及滑动条绘制

CoderZ1010 发布时间:2021-05-14 17:16:37 ,浏览量:5

1.各类字段:

为我们的Test类中添加以下字段:

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;
}

在TestEditor类中来绘制这些字段:

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;
        }
    }
}

2.滑动条

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;
        }
    }
}

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

微信扫码登录

0.4651s