demo是实现了点击不同的按钮,MyInput传递按钮的名,TestAction接收对应的名,以进行对应的显示:
①
using System;
using UnityEngine.UI;
/// <summary>
/// 脚本挂到所有按钮的父物体上,实现按钮点击响应事件
/// </summary>
public class MyInput : MonoBehaviour {
public Action<string> Oninput;
public List<Button> btnList;
void Start () {
for (int i = 0; i < transform.childCount; i++)
{
btnList.Add(transform.GetChild(i).GetComponent<Button>());
}
foreach (Button item in btnList)
{
item.onClick.AddListener(() => BtnClick(item.name));
}
}
public void BtnClick(string _name) {
Oninput(_name);
}
}
②
using UnityEngine;
/// <summary>
/// 通过事件绑定方法 接收到传递的消息 进行对应显示
/// </summary>
public class TestAction : MonoBehaviour {
public MyInput act_MyInput;
public Transform parent;
// Use this for initialization
void Start () {
act_MyInput.Oninput += OutEvnPut;
}
public void OutEvnPut(string objName)
{
print("我接收到传递过来的名字消息"+objName);
GameObject g= Resources.Load(objName) as GameObject;
Instantiate(g,parent);
}
private void OnDestroy()
{
act_MyInput.Oninput -= OutEvnPut;
}
}