Поискал-поискал, да, видно, плохо.
Вопрос коротко.
Инстанциируем объект со скриптом. Как инициализировать паблик переменные этого скрипта до того, как он попадёт в Awake()?
Вопрос развёрнуто.
GameObject objA имеет некий скрипт scrA.
В какой-то момент времени этот скрипт создаёт GameObject objB из префаба.
У objB есть скрипт scrB:
Код
using UnityEngine;
public class scrB : MonoBehaviour
{
public bool param = true;
private void Awake()
{
if(param)
Debug.Log("Объект находился на сцене в момент создания");
else
Debug.Log("Объект создан скриптом scrA"); // забегая вперёд - эта строчка никогда не сработает
}
}
Кусок кода в scrA:
Код
private void Update()
{
if(Input.GetMouseButtonDown(0))
{
GameObject _objB = Instantiate(objB) as GameObject; // если здесь поставить точку останова и двинуться на шаг вперёд, то попадём в Awake() скрипта scrB
scrB _scrB = _objB.GetComponent<scrB>(); // здесь очень хочется инициализировать param, но Awake() уже отработал...
_scrB.param = false; // всё бесполезно...
}
}
Теперь читаем в начале пункт "Вопрос коротко".
P.S. Да, я знаю про Start(), но важный кусок инициализации (это должно случиться в Awake()) происходит в зависимости от параметра, необходимого к заполнению на этапе конструктора объекта.