Это пример кода для объявления массива UnityAction.
И назначьте каждый метод для элементов.Назначение имени метода UnityAction (Delegate)
public class Car {
int _wheels;
public Car(int wheels){_wheels = wheels;}
public void Go(){
Debug.Log ("GO:"+_wheels);
}
}
public class UnityEventTest : MonoBehaviour {
void Start()
{
UnityAction []action = new UnityAction[2];
//case #1
action[0] = new UnityAction(FuncA);
//case #2
action[1] = FuncB;
action[0].Invoke();
action[1].Invoke();
//----------------------------------
Car aCar = new Car(1);
Car bCar = new Car(2);
Car []carList = new Car[2];
carList[0] = aCar;
carList[1] = bCar;
carList[0].Go();
carList[1].Go();
}
void FuncA(){Debug.Log ("A");}
void FuncB(){Debug.Log ("B");}
}
Оба Case # 1 и Case # 2 работы скважины.
Выход:
A
B
GO:1
GO:2
Но я не понимаю, почему дело № 2 работы?
В каждом элементе массива не может быть экземпляра UnityAction.
Код просто назначает метод класса. И, насколько я знаю C# делегат (как UnityAction) является ссылочными типами данных.
Поэтому я думаю, что случай # 2 должен внести некоторую ошибку или не может быть назначен.
В отличие от нижнего регистра, я думаю, что имя метода не является экземпляром.
где - единство? –
UnityEngine.Events.UnityAction –
Что вы подразумеваете под «В каждом элементе массива не может быть экземпляра UnityAction.»? Что должно вызывать ошибку с нулевым указателем? –