当前位置:   article > 正文

重写UGUI组件继承组件的方式(以button举例)_unity 继承button后增加的属性不显示

unity 继承button后增加的属性不显示

继承重写UGUI的组件很简单以Button为例子 

首先在Unity的Project面板上创建一个新文件夹Scripts,在该文件夹下创建一个新的脚本,我的命名是MyButton

脚本代码如下:

  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. public class MyButton : Button
  4. {
  5.     [SerializeField] private int _newNumber;
  6. }

这样就继承了Button组件 可以自己添加新的字段。

但是添加字段后会发现无论是访问级别是 public 还是 添加[SerializeField] 都不会显示在unity的Inspector面板上

原来是因为 每个UGUI组件的脚本都有对应的Editor脚本负责显示这些字段。

所以我们可以通过重写对应的Editor脚本的方式去让我们新创建的字段显示出来。

我们要创建一个新的脚本MyButtonEditor继承ButtonEditor 

注意:这是一个编辑器类,如果想要使用它必须要把它放到工程目录下的Editor文件夹下

PS:Editor文件夹可以存在在根目录下,也可以存在于子目录下 只要他的名字是Editor。存放于Editor文件夹下的资源只在编辑器下可以使用,打包发布时不会一同发布。

所以在这里我在根目录下创建了一个Editor文件夹并新建MyButtonEditor脚本

脚本代码如下:

  1. using UnityEditor;//编辑器类在UnityEditor命名空间下。所以当使用C#脚本时,你需要在脚本前面加上 "using UnityEditor"引用。
  2. using UnityEditor.UI;//ButtonEditor位于此命名空间下
  3. //指定我们要自定义编辑器的脚本
  4. [CustomEditor(typeof(MyButton),true)]
  5. //使用了 SerializedObject 和 SerializedProperty 系统,因此,可以自动处理“多对象编辑”,“撤销undo” 和 “预制覆盖prefab override”。
  6. [CanEditMultipleObjects]
  7. public class MyButtonEditor : ButtonEditor
  8. {
  9. //对应我们在MyButton中创建的字段
  10. //PS:需要注意一点,使用SerializedProperty 必须在MyButton类_newNumber字段前加[SerializeField]
  11. private SerializedProperty _newNumber;
  12. protected override void OnEnable()
  13. {
  14. base.OnEnable();
  15. _newNumber = serializedObject.FindProperty("_newNumber");
  16. }
  17. //并且特别注意,如果用这种序列化方式,需要在 OnInspectorGUI 开头和结尾各加一句 serializedObject.Update(); serializedObject.ApplyModifiedProperties();
  18. public override void OnInspectorGUI()
  19. {
  20. base.OnInspectorGUI();
  21. EditorGUILayout.Space();//空行
  22. serializedObject.Update();
  23. EditorGUILayout.PropertyField(_newNumber);//显示我们创建的属性
  24. serializedObject.ApplyModifiedProperties();
  25. }
  26. }

现在就可以显示我们自己创建的属性了

这是昨天在群中以为朋友提出的方法,但是我之前并不知道所以我用了一种比较笨的方式 那就是继承接口重写 很麻烦 也很笨。所以不再介绍这种方法了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/806568
推荐阅读
相关标签
  

闽ICP备14008679号