Я думаю, что проблема в:
public void Start() {
pig = GetComponent<Pig>().EatFood();
}
GetComponent<Pig>()
попытается найти компонент (класс, производный от monobehaviour) Pig
, который присоединен к тому же gameObject
, что и скрипт, которыйзвонит GetComponent
.Это означает, что для того, чтобы это работало, вам нужно Pig
и WhichAnimal
для одного и того же gameObject
.
Итак, первое решение - получить экземпляр Pig
при создании экземпляра gameObject
с помощью этого сценария.
Другое решение, используйте Object.FindObjectOfType<Pig>()
, чтобы найти экземпляр Pig
или FindObjectsOfType<Pig>()
, чтобы иметь массив Pig
, если существует более одного ^^.
Но используйтеэто с осторожностью, а не каждый кадр, только один раз.Это может быть ресурсоемким.