如何在Unity UI中将自定义函数分配为参数?

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

我有一个场景,其中多个gameObject在做非常相似的事情。 onTrigger,gameObject调用控制器中的函数。 (每个gameObject的目标函数都不同,但是一个gameObject总是调用该函数)

对我来说,这似乎是很多重复的代码,我想对功能进行抽象;非常类似于按钮OnClick()处理这种情况的方式:

Button OnClick()

我自然认为这是一个开始并在文档和论坛上进行挖掘并凑整一些东西的好地方。目前,我的代码在:

using UnityEngine; 
using UnityEngine.Events;

/**
 * This script takes in a callback function, and a gameObject tag.
 * When OnEnterTrigger2D is executed, calls the call back function if the collision tag matches given tag
 *
 * Use it for reccuring events in multiple gameObjects like spawning obstacles when it hits spawn points,
 * or to call Endgame when player hits obstacles
 */

public class OnTriggerEnterCallFn : MonoBehaviour
{
    public string targetTag;
    public EventTrigger.TriggerEvent callbackFn;

    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.CompareTag(targetTag))
        {
            callbackFn.Invoke(null);
        }
    }
}

认为这是所有需要重新安排的,但是我似乎缺少了一些东西,因为在Unity UI中,当我分配该类时,我的功能根本不可见:

enter image description here

我的FlappyBirdObstacleManager的功能定义为public void CreateNewObstacle(),甚至使public void CreateNewObstacle(BaseEventData ed)都没有积极作用。

我想念什么?

c# unity3d
1个回答
0
投票

我认为您应该改为使用UnityEvents

或者如果您确实需要传递的参数(由于传递UnityEvents,目前看来似乎不是,您可以实现自己的继承形式null

UnityEvent<T>

然后在脚本中使用它

UnityEvent<T>
© www.soinside.com 2019 - 2024. All rights reserved.