Каковы причины и возможные решения для трех ошибок, которые возникают?
Ошибка 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();
}
Та же самая ошибка, что и в предыдущем пункте. Тебе надо использовать двойное равно для сравнения значений, а не присваивания. Почему ты не заметил эту ошибку, когда перечитывал код?