访问预制件的子(按钮)并向其添加函数.统一



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

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

相关内容

  • 没有找到相关文章

最新更新