访问预制件的子(按钮)并向其添加功能OnClick。统一

问题描述 投票:0回答:2

我有一个包含一些按钮的预制件,我想获取按钮并通过脚本向他们添加特定的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");

“AddGoals”是我的按钮(标签名称)

所以在这一点之后,如何在单击按钮时对其进行编码以添加特定功能?

任何帮助将不胜感激,谢谢!

user-interface unity3d button onclick game-development
2个回答
1
投票

获取按钮组件并向其添加侦听器。单击该按钮时,监听器将调用该函数。 TaskOnClick是一个示例函数,单击该按钮时将调用该函数。

t.GetComponent<Button>().onClick.AddListener(TaskOnClick);


void TaskOnClick()
{
    Debug.Log("You have clicked the button!");
}

1
投票

使用.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")}));

您必须确保它实际上是一个按钮,否则代码将失败。这当然可以修改,只是一个例子。我希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.