У меня есть сценарий, в котором несколько объектов gameObject делают что-то очень похожее. onTrigger, gameObject вызывает функцию в контроллере. (Функция назначения различается для каждого gameObject, но один gameObject всегда вызывает эту одну функцию)
Мне кажется, что это много повторяющегося кода, и я хотел бы абстрагироваться от функциональности; очень похоже на то, как кнопка 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, когда я назначаю класс, моя функция не отображается вообще:
Мой FlappyBirdObstacleManager
имеет определение функции как public void CreateNewObstacle()
и даже создание этого public void CreateNewObstacle(BaseEventData ed)
не имело положительного эффекта .
Что мне не хватает, пожалуйста?