Каковы причины и возможные решения для трех ошибок, которые возникают?
Ошибка CS0103 возникает, когда компилятор не может распознать идентификатор (переменную, метод или класс). Это может произойти, если идентификатор неправильно объявлен или не существует в текущем контексте. Решением может быть проверка правильности написания и корректное объявление идентификатора или добавление пространства имен, если это необходимо. Ошибка CS0029 возникает, когда типы операндов не совместимы для выполнения определенного оператора или метода. Например, при попытке сложить числовое значение с объектом типа string. Для решения этой ошибки необходимо проверить типы операндов и привести их к совместимым типам или использовать другие операторы или методы. Отсутствие дополнительной информации о конкретных трех ошибках не позволяет найти точное решение. Ошибки в Unity могут иметь разную природу и возникать по разным причинам. Однако, общие рекомендации для решения любых ошибок в Unity включают проверку правильности кода, обновление Unity до последней версии, проверку правильности установки и настройки пакетов и обновление драйверов графической карты. Если эти шаги не помогают, может потребоваться дополнительное исследование и консультация с сообществом Unity или поиск специалиста.
void OnMouseUp() { if(door_handle) door_handle.transform.localRotation = handle_start_rot; }
У тебя используется переменная handle_start_rot, но она не объявлена. Что ты хотел на самом деле использовать? Возможно, у тебя опечатка или ты забыл добавить нужное поле или переменную из другого класса. if(door_axis = door_axis_ENUM.X) // 85 { float posX = Mathf.MoveTowards(transform.localPosition.x, start_dist_or_angle, open_speed * Time.deltaTime); transform.localPosition = new Vector3(posX, transform.localPosition.y, transform.localPosition.z); if(transform.localPosition.x == start_dist_or_angle + open_dist_or_angle) Stop_open_close(); }
Очевидно, что ошибка здесь в одиночном знаке равно. Должно быть двойное равно, чтобы сравнить значения, а не присвоить значение. Похоже, что у тебя опечатка, и ты хотел сделать сравнение, как в соседних ветках if-else. else if(door_axis = door_axis_ENUM.Z) { float angleZ = Mathf.MoveTowardsAngle(transform.localEulerAngles.z, start_dist_or_angle + open_dist_or_angle, open_speed * Time.deltaTime); transform.localEulerAngles = new Vector3(0, 0, angleZ); if(transform.localEulerAngles.z == start_dist_or_angle + open_dist_or_angle) Stop_open_close(); }
Та же самая ошибка, что и в предыдущем пункте. Тебе надо использовать двойное равно для сравнения значений, а не присваивания. Почему ты не заметил эту ошибку, когда перечитывал код?