Как назначить пользовательскую функцию в качестве параметра в пользовательском интерфейсе Unity? - PullRequest
0 голосов
/ 17 июня 2020

У меня есть сценарий, в котором несколько объектов 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, когда я назначаю класс, моя функция не отображается вообще:

enter image description here

Мой FlappyBirdObstacleManager имеет определение функции как public void CreateNewObstacle() и даже создание этого public void CreateNewObstacle(BaseEventData ed) не имело положительного эффекта .

Что мне не хватает, пожалуйста?

1 Ответ

1 голос
/ 17 июня 2020

Кажется, вам действительно не нужен параметр BaseEventData, поскольку вы все равно передаете null. Я думаю, вам лучше просто использовать без параметров UnityEvents.

public UnityEvent callbackFn;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...