Я пытаюсь выяснить, как использовать общий делегат для управления моими экземплярами объектов в игровом движке.C# общий делегат для управления экземплярами объектов
Вот некоторые псевдо-код, чтобы показать, что я пытаюсь сделать:
public class ObjectManager
{
public delegate void ObjectManagerEvent <T> (T instantiatedObject);
public ObjectManagerEvent <T> onObjectInstantiated;
public void InstantiateObject (Object objToInstantiate)
{
var obj = SomeInternalInstantiateMethod();
ObjectManagerEvent _onObjectInstantiated = onObjectInstantiated;
if (_onObjectInstantiated != null)
{
_onObjectInstantiated (obj);
}
}
}
public class Shape : EBehaviour {}
public class Animal : EBehaviour {}
public class DemoShape
{
private void Init()
{
ObjectManager.onObjectInstantiated += OnObjectInstaniated;
}
public void OnObjectInstaniated (Shape shape)
{
// do something with shape
}
}
public class DemoAnimal
{
private void Init()
{
ObjectManager.onObjectInstantiated += OnObjectInstaniated;
}
public void OnObjectInstaniated (Animal animal)
{
// do something with animal
}
}
Я знаю, что public ObjectManagerEvent <T> onObjectInstantiated();
будет выдавать ошибку, но я только отчасти потеряли о том, как добиться того, что я хотеть.
Любые указатели?