я объявляю переменный класс следующим образом (один из MecAnim
костей, которые я хочу лечить иначе позже):используя переменный класс в LateUpdate()
private Transform specialBone;
Затем я инициализировать его Start()
следующим образом:
specialBone = transform.Find("Pelvis/LeftShoulder/LeftUpperArm/LeftLowerArm/LeftHand");
Наконец, я пытаюсь сделать что-то в LateUpdate()
, чтобы увидеть какой-то эффект (я только узнать, что я могу сделать в LateUpdate()
изменить материал происходит в Update()
и т.д. ...):
void LateUpdate()
{
specialBone.position = specialBone.position + new Vector3(0f, 1f, 0f);
}
Однако я получаю сообщение об ошибке NullReferenceException: Object reference not set to an instance of an object
на LateUpdate()
линии ...
Что я отсутствующий или делаю неправильно, что specialBone
еще null
?
Вы правы - он не мог найти его для переменной 'public' class, но означает ли это, что я должен поместить все' transform.Find ("Пелвис/LeftShoulder/LeftUpperArm/LeftLowerArm/LeftHand") 'в раздел переменных переменных? Любая работа вокруг, чтобы аккуратно определить ее в 'Start'? – Joshua
вы не можете использовать функцию «Найти» в разделе переменных (btw не называемый раздел переменной). Самый простой и быстрый способ - создать публичный varaible - >> public transform specialBone, а затем перетащить объект из иерархии в файл сценария в редакторе. Тем не менее, как вы это делаете, также правильно, но я думаю, что вы пропустили вложенность уровня или некоторой орфографической ошибки. Другой способ, которым вы можете это сделать, - >> [SerializeField] и определить под ним частные переменные, и они появятся в редакторе. – LumbusterTick