使用自定义Inspector扩展Unity UI组件

是否可以扩展新的单位ui组件,例如转换组件? 因为当我尝试扩展按钮而不是转换组件时没有任何反应

using UnityEditor; using UnityEngine; [CustomEditor(typeof(Transform))] public class CustomTransform : Editor { public override void OnInspectorGUI() { } } 

是的,您可以扩展UI组件并将它们编写为自己的自定义检查器。 您只需要记住使用正确的命名空间,并且还要从正确的Inspector类inheritance。

你当然也可以覆盖!

这里的示例是UISegmentedControlButton

 using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; using System.Collections; public class UISegmentedControlButton : Button { public Sprite offSprite; public Sprite onSprite; public Color offTextColor = Color.white; public Color onTextColor = Color.white; private bool isSelected; public bool IsSelected { get { return isSelected; } set { isSelected = value; Text text = this.transform.GetComponentInChildren(); if (value) { this.GetComponent().sprite = onSprite; text.color = onTextColor; } else { this.GetComponent().sprite = offSprite; text.color = offTextColor; } } } public override void OnPointerClick(PointerEventData eventData) { this.transform.parent.GetComponent().SelectSegment(this); base.OnPointerClick(eventData); } } 

和编辑类:

PS ButtonEditor与UnityEditor.UI.ButtonEditor不同,因为第一个来自UnityEngine.ButtonEditor。 要从UnityEditor访问.UI,您需要将Editor脚本放在Editor文件夹下

 using UnityEngine; using UnityEditor; using UnityEngine.UI; using System.Collections; [CustomEditor(typeof(UISegmentedControlButton))] public class UISegmentedControlButtonEditor : UnityEditor.UI.ButtonEditor { public override void OnInspectorGUI() { UISegmentedControlButton component = (UISegmentedControlButton)target; base.OnInspectorGUI(); component.onSprite = (Sprite)EditorGUILayout.ObjectField("On Sprite", component.onSprite, typeof(Sprite), true); component.onTextColor = EditorGUILayout.ColorField("On text colour", component.onTextColor); component.offSprite = (Sprite)EditorGUILayout.ObjectField("Off Sprite", component.offSprite, typeof(Sprite), true); component.offTextColor = EditorGUILayout.ColorField("Off text colour", component.offTextColor); } } 

此处还有一个直接与Unity UI源有用的链接

https://bitbucket.org/Unity-Technologies/ui/src

并certificate它有效:

在此处输入图像描述