继承重写UGUI的组件很简单以Button为例子
首先在Unity的Project面板上创建一个新文件夹Scripts,在该文件夹下创建一个新的脚本,我的命名是ButtonEx,
脚本代码如下:
using UnityEngine.EventSystems;
namespace UnityEngine.UI
{
public class ButtonEx : Button
{
[SerializeField] public string music = "click";
public override void OnPointerClick(PointerEventData eventData)
{
if (eventData.button != PointerEventData.InputButton.Left)
return;
if (!IsActive())
return;
UISystemProfilerApi.AddMarker("Button.onClick", this);
onClick.Invoke();
// 播放音乐
//MusicManager.GetInstance().PlaySoundEffect(music);
}
}
}
这样就继承了Button组件 可以自己添加新的字段。
但是添加字段后会发现无论是访问级别是 public 还是 添加[SerializeField] 都不会显示在unity的Inspector面板上
原来是因为 每个UGUI组件的脚本都有对应的Editor脚本负责显示这些字段。
所以我们可以通过重写对应的Editor脚本的方式去让我们新创建的字段显示