Мне уже приходилось делать эту вещь, каскадную инициализацию. Вот трюк, который я нашел:
public class GOA : MonoBehaviour
{
public bool isInitialized = false;
void Start()
{
// ... do something ...
isInitialized = true;
}
}
И затем, в классе B, я инициализирую в Update()
методе. Я использую логическое значение, чтобы убедиться, что инициализация произойдет только один раз
public class GOB : MonoBehaviour
{
public bool isInitialized = false;
var a = GameObject.Find("A");
void Update() //Update ! Not Start()
{
if (!isInitialized && a.GetComponent<GOA>().isInitialized)
{
// initialize B...
isInitialized = true;
}
}
}