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

举报
CoderZ1010 发表于 2022/09/25 05:36:52 2022/09/25
【摘要】 1.各类字段: 为我们的Test类中添加以下字段: using UnityEngine; public class Test : MonoBehaviour{ public enum TestEnum { Enum1, Enum2, } public string stringV...

1.各类字段:

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


  
  1. using UnityEngine;
  2. public class Test : MonoBehaviour
  3. {
  4. public enum TestEnum
  5. {
  6. Enum1,
  7. Enum2,
  8. }
  9. public string stringValue = "str";
  10. public int intValue = 30;
  11. public float floatValue = 50f;
  12. public AudioClip clipValue;
  13. public string passwordValue = "1a2s3xd455";
  14. public TestEnum EnumValue = TestEnum.Enum1;
  15. }

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


  
  1. using UnityEngine;
  2. using UnityEditor;
  3. [CustomEditor(typeof(Test))]
  4. public class TestEditor : Editor
  5. {
  6. private Test Target;
  7. private void OnEnable()
  8. {
  9. Target = target as Test;
  10. }
  11. public override void OnInspectorGUI()
  12. {
  13. //绘制String类型字段
  14. string newStringValue = EditorGUILayout.TextField("String Value", Target.stringValue);
  15. if (newStringValue != Target.stringValue)
  16. {
  17. Target.stringValue = newStringValue;
  18. }
  19. //绘制Int类型字段
  20. int newIntValue = EditorGUILayout.IntField("Int Value", Target.intValue);
  21. if (newIntValue != Target.intValue)
  22. {
  23. Target.intValue = newIntValue;
  24. }
  25. //绘制Float类型字段
  26. float newFloatValue = EditorGUILayout.FloatField("Float Value", Target.floatValue);
  27. if (newFloatValue != Target.floatValue)
  28. {
  29. Target.floatValue = newFloatValue;
  30. }
  31. //绘制Object类型字段 通过as转化为其它类型
  32. AudioClip newClipValue = EditorGUILayout.ObjectField("AudioClip Value", Target.clipValue, typeof(AudioClip), false) as AudioClip;
  33. if (newClipValue != Target.clipValue)
  34. {
  35. Target.clipValue = newClipValue;
  36. }
  37. //绘制密文类型的String字段
  38. string newPasswordValue = EditorGUILayout.PasswordField("Password Value", Target.passwordValue);
  39. if(newPasswordValue != Target.passwordValue)
  40. {
  41. Target.passwordValue = newPasswordValue;
  42. }
  43. //绘制枚举类型字段
  44. Test.TestEnum newEnumValue = (Test.TestEnum)EditorGUILayout.EnumPopup("Enum Value", Target.EnumValue);
  45. if (newEnumValue != Target.EnumValue)
  46. {
  47. Target.EnumValue = newEnumValue;
  48. }
  49. }
  50. }

2.滑动条


  
  1. using UnityEngine;
  2. using UnityEditor;
  3. [CustomEditor(typeof(Test))]
  4. public class TestEditor : Editor
  5. {
  6. private Test Target;
  7. private void OnEnable()
  8. {
  9. Target = target as Test;
  10. }
  11. public override void OnInspectorGUI()
  12. {
  13. //绘制Int类型滑动条
  14. int newIntValue = EditorGUILayout.IntSlider("Int Value", Target.intValue, 0, 30);
  15. if (newIntValue != Target.intValue)
  16. {
  17. Target.intValue = newIntValue;
  18. }
  19. //绘制Float类型滑动条
  20. float newFloatValue = EditorGUILayout.Slider("Float Value", Target.floatValue, 0f, 100f);
  21. if (newFloatValue != Target.floatValue)
  22. {
  23. Target.floatValue = newFloatValue;
  24. }
  25. }
  26. }

文章来源: coderz.blog.csdn.net,作者:CoderZ1010,版权归原作者所有,如需转载,请联系作者。

原文链接:coderz.blog.csdn.net/article/details/116796830

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。