十二、编辑器开发之Slider及各类字段绘制
2023-06-13 09:11:38 时间
为测试脚本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;
}
创建Test类的编辑器类TestEditor
1.滑动条
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.各类字段:
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;
}
}
}
相关文章
- 三、编辑器开发之CustomEditor
- 五、编辑器开发之GUIStyle
- 八、编辑器开发之GUILayout布局
- 九、编辑器开发之Gizmos
- Unity 编辑器开发实战【MenuItem & CONTEXT】- Image、RawImage的相互转换
- Unity 编辑器开发实战【MenuItem】- 批量删除场景中的LOD Group,保留最高层次细节
- 从0到1开发可视化拖拽H5编辑器(React)
- Mac代码编辑器CodeRunner 4.2
- vue.js 渲染函数_Vue.js的不可渲染且可扩展的RTF编辑器[通俗易懂]
- Vue富文本_ueditor编辑器
- PDF阅读器之Adobe Acrobat Reader pdf编辑器全版本下载
- 【架构师(第二十五篇)】编辑器开发之属性编辑区域表单渲染
- Adobe Acrobat Pro DC 2020(非常棒的PDF编辑器)--最牛逼的PDF编辑器
- unity如何在编辑器扩展中使用协程?
- fabric.js开发图片编辑器的细节实现
- Apple 的 plist 编辑器入门指南:基础操作与高级功能详解
- 解决Linux VI编辑器乱码问题(linuxvi乱码)
- 妙用Linux vi编辑器之退出命令(linux退出vi命令)
- Linux下使用Nano编辑器实现快速文本编辑(linuxnano)
- Linux下使用vi编辑器保存并安全退出(linux的vi保存退出)
- Linux Vi编辑器:如何实现复制粘贴(linuxvi复制粘贴)
- Emacs是一款著名的集成开发环境和文本编辑器,被公认为是最受专业程序员喜爱的代码编辑器之一。
- UBB编辑器
- 在线编辑器的实现原理(兼容IE和FireFox)