我有一个预制件,其中包含一些按钮,我想获取按钮并通过脚本向它们添加特定的onClick函数。我找不到正确的方法来获取按钮。我正在尝试的是:
tempGo = Instantiate(prefabs[0]);
tempGo.transform.SetParent(transform, false);
tempGo.transform.localScale = Vector3.one;
tempGo.transform.localPosition = Vector3.zero;
Transform t = tempGo.GetComponentInChildren<Transform>().Find("AddGoals");
"添加目标"是我的按钮(标签名称(
那么在这一点之后,我如何编码它以在单击按钮时添加特定功能?
任何帮助将不胜感激,谢谢!
获取按钮组件并向其添加侦听器。侦听器将在单击该按钮时调用该函数。TaskOnClick 是一个示例函数,单击按钮时将调用该函数。
t.GetComponent<Button>().onClick.AddListener(TaskOnClick);
void TaskOnClick()
{
Debug.Log("You have clicked the button!");
}
使用 .Find("(,您正在寻找具有该名称的游戏对象,而不是其标签。您可以在实例化对象后,使用 GameObject.FindGameObjectsWithTag("AddGoals"(。这将返回具有该标记的所有对象的数组。然后使用 Linq,您可以执行以下操作:
var items = GameObject.FindGameObjectsWithTag("AddGoals"); //This gives gameobject array
var itemTansforms = items.Select(x=>x.transfrom).ToList(); //gives you a list of the object tansforms
至于添加事件,您需要获取对象的按钮组件,然后添加 onclick 事件。
items.ForEach(x=>x.GetComponent<Button>().AddListener(delegate {Debug.Log($"{x.name} has been clicked")}));
您必须确保它实际上是一个按钮,否则代码将失败。这当然可以修改,这只是一个例子。我希望这有帮助!