Сломанный MonoBehaviour в скриптах Unity

Вопросы и ответы

Я только начинаю заниматься разработкой игр на Unity и пытался сделать некоторые движения, но Unity выдает мне ошибку, связанную с MonoBehaviour. Может кто-то помочь? Сообщение такое:
Не найдены скрипты MonoBehaviour в файле или их имена не совпадают с именем файла.
Код находится в Visual Studio 2019.
Вот мой код, конкретно для игрового движка игрока:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMotor : MonoBehaviour
{
    private CharacterController controller;
    private Vector3 playerVelocity;
    public float speed = 5f;
    // Start вызывается перед первым обновлением кадра
    void Start()
    {
        controller = GetComponent<CharacterController>();
    }

    // Update вызывается один раз за кадр
    void Update()
    {

    }
    //получаем ввод для нашего InputManager.cs и применяем его к контроллеру персонажа.
    public void processMove(Vector2 input)
    {
        Vector3 moveDirection = Vector3.zero;
        moveDirection.x = input.x;
        moveDirection.z = input.y;
        controller.Move(transform.TransFormDirection(moveDirection) * speed * Time.deltaTime);
    }
}

Я пытался добавить скрипт к игровому персонажу, но вместо этого получил эту ошибку в Unity вместе с сообщением: “Пожалуйста, исправьте ошибки компиляции перед созданием новых компонентов скрипта.”

Судя по тому, что я вижу в вашем предоставленном скрипте:
У вас есть опечатка в TransFormDirection(), должно быть TransformDirection().

Также, пожалуйста, предоставьте все сообщения об ошибках, которые у вас есть.

Ответ

Конечно! Давайте разберем вашу проблему с кодом, используя предоставленный вами пример кода для PlayerMotor.

Причина Ошибки

Ошибка, которую вы получаете: "No MonoBehaviour scripts in the file, or their names do not match the file name" может возникнуть по нескольким причинам:

  1. Имя файла не соответствует имени класса: Имя файла должно точно совпадать с именем класса. В вашем случае, файл должен называться PlayerMotor.cs.

  2. Ошибки в коде: Наличие ошибок в вашем коде также приведет к тому, что Unity не сможет скомпилировать скрипт. В вашем коде есть опечатка в методе TransformDirection(), который вы написали как TransFormDirection(). Это ошибка, и её нужно исправить.

Исправление

Попробуйте внести следующие изменения в ваш код:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMotor : MonoBehaviour
{
    private CharacterController controller;
    private Vector3 playerVelocity;
    public float speed = 5f;

    // Start is called before the first frame update
    void Start()
    {
        controller = GetComponent<CharacterController>();
    }

    // Update is called once per frame
    void Update()
    {

    }

    // Получение вводимых данных для управления и применение их к контроллеру персонажа.
    public void processMove(Vector2 input)
    {
        Vector3 moveDirection = Vector3.zero;
        moveDirection.x = input.x;
        moveDirection.z = input.y;
        controller.Move(transform.TransformDirection(moveDirection) * speed * Time.deltaTime); // Исправлено здесь
    }
}

Шаги для Решеения Проблемы

  1. Убедитесь, что имя файла PlayerMotor.cs совпадает с именем вашего класса PlayerMotor.
  2. Исправьте опечатку в методе TransformDirection().
  3. После внесения изменений сохраните файл в Visual Studio и вернитесь в Unity. Unity должна автоматически скомпилировать код при внесении изменений. Если есть другие ошибки, они будут отображены в консоли Unity.

Дополнительные Советы

  • Если после исправления вы всё равно получаете ошибки, проверьте другие скрипты в вашем проекте на наличие компиляционных ошибок, так как они могут также блокировать сборку.
  • Ознакомьтесь с консолью Unity для получения подробной информации об ошибках, так как она может дать подсказки о том, что именно не так.

Если вы хотите поделиться дополнительными ошибками, которые вы видите в консоли Unity, не стесняйтесь и пишите, я с радостью помогу вам с их решением!

Оцените материал
Добавить комментарий

Капча загружается...