У меня есть MonoBehavior, выполняющий что-то вроде ниже:
public class MyMonoBehavior : MonoBehaviour
{
private Rigidbody m_Rigidbody;
private void Start()
{
m_RigidBody = GetComponent<Rigidbody>();
}
private void FixedUpdate()
{
m_Rigidbody.AddForce(Vector3.one); // May throw NullRefrenceException
}
}
MyMonoBehavior присоединен к GameObject, который создается во время выполнения.Иногда m_Rigidbody.AddForce(Vector3.one);
генерирует исключение NullRefrenceException.Кажется, что FixedUpdate запускается до Start .Это ошибка?
Согласно документации Unity3d :
До первого обновления кадра Начало:
- Start вызывается перед первым обновлением кадра, только если включен экземпляр скрипта.
Для объектов, добавленных в сцену, функция Start будет вызываться при all для любого из них вызываются сценарии перед обновлением и т. д.Естественно, это не может быть применено, когда объект создается во время игры.
Так что, кажется, выше все сценарии включают в себя "MyMonoBehavior" сам?Таким образом, его FixedUpdate может быть выполнено до его запуска.
Правильно ли мое понимание?Или это ошибка Unity3d?
Моя версия Unity3d - 2017.3.1f1