Проблема вот в чем: пусть у нас есть 2 объекта, к одному из них прикреплен такой скрипт
public class GameController : MonoBehaviour
{
public static GameController Instance;
public Transform SomeTrasform; // Задается в Editor'e
private void Start()
{
Instance = this;
}
}
Ко второму такой
public class SomeClass : MonoBehaviour
{
private void Start()
{
Transform someTransform = GameController.Instance.SomeTransform;
}
}
Проблема в том, что второй объект может создаваться раньше первого, и я получаю NullReferenceException, пытаясь вызвать GameController.Instance. Как это можно обойти? У меня пока 2 варианта:
С помощью корутины отложить создание второго объекта на пол секунды, к примеру. По-моему так себе вариант.
Отказаться от static GameController.Instance, и использовать FindGameObjectWithTag("GameController").GetComponent().SomeTransform; Тут тоже есть свои недостатки, например требуются изменения в коде при переносе скрипта GameController на другой объект и банально не так красиво получается.