使用Editor脚本自动添加事件到UGUI的属性面板上
image.png
编辑器调用脚本如下
using UnityEngine;
using UnityEditor;
using UnityEngine.UI;
using UnityEngine.Events;
using UnityEditor.Events;
public class EditorHelp
{
[MenuItem("Tools/遍历按钮添加事件参数", false, 1)]
static void AutoAddButtonEvent()
{
Data data = GameObject.FindObjectOfType<Data>();
GameObject[] selections = Selection.gameObjects;
foreach (GameObject selection in selections)//遍历每个选中的物体
{
foreach (Button child in selection.GetComponentsInChildren<Button>())
{
//遍历子物体及孙物体
Debug.Log(child.name);
//创建一个UnityAction
//设置委托执行的函数data.OnButtonClick,其中data在前面先查找到
//<>中间为委托的参数,需要与OnButtonClick函数的参数一致
//由于AddObjectPersistentListener必须要参数,因此这里必须要为函数设置一个参数
UnityAction<Text> callback = new UnityAction<Text>(data.OnButtonClick);
//获取一下需要填入的参数
Text text = child.transform.GetChild(0).GetComponent<Text>();
//为child这个Button添加callback监听事件
UnityEventTools.AddObjectPersistentListener<Text>(child.onClick, callback, text);
}
}
}
}
运行时的函数脚本如下:
using UnityEngine;
using UnityEngine.UI;
public class Data : MonoBehaviour
{
void Start()
{
}
public void OnButtonClick(Text text)
{
Debug.Log(text.text);
}
}
网友评论