Unity no monobehaviour scripts in the file как исправить

Hello everyone I’ve been working on my first game and suddenly I got this error and cannot run the game, I already installed the new version of unity but it persists. I see it can be caused for several reasons but had no luck so far, do you know the most probable causes and how to fix it?

When I select the scripts the only one where I do not get this error is the following:

using UnityEngine;
using Assets.Code.States;
using Assets.Code.Interfaces;

public class StateManager : MonoBehaviour 
{
    private IStateBase activeState;

    void Start () 
    {
        activeState = new BeginState (this);
    }

    void Update () 
    {
        if (activeState != null)
            activeState.StateUpdate();
    }
    void OnGUI()
    {
        if (activeState != null)
            activeState.ShowIt ();
    }
    public void SwitchState(IStateBase newState)
    {
        activeState = newState;
    }
}

But for example here I get the error:

using UnityEngine;
using Assets.Code.Interfaces;

namespace Assets.Code.States
{
    public class BeginState : IStateBase
    {
        private StateManager manager;

        public BeginState (StateManager managerRef)
        {
            manager = managerRef;
            Debug.Log ("Constructing BeginState");
            Time.timeScale = 0;
        }
        public void StateUpdate()
        {
            if (Input.GetKeyUp(KeyCode.Space))
            manager.SwitchState(new PlayState (manager));
        }

        public void ShowIt()
        {
            if (GUI.Button (new Rect (10, 10, 150, 100), "Press to Play"))
            {
                Time.timeScale = 1;
                manager.SwitchState (new PlayState (manager));
            }
        }
    }
}

And so on with every other script.

I’ve already installed a newer version of unity3d, uninstalled the antivirus, checked the file names but the error persists. I also do not have any class in a namespace..

Вот мой скрипт:

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

public class Player : MonoBehaviour
{
    public float speed;

    private Rigidbody2D rb;
    private Vector2 moveInput;
    private Vector2 moveVelocity;

    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }

    void Update()
    {
        moveInput = new Vector2(Input.GetAxisRaw(Horizontal)
        moveVelocity = moveInput.normalized * speed;
    }

    void FixedUpdate()
    {
        rb.MovePosition(rb.position + moveVelocity * Time.fixedDeltaTime);
    }
}


  • Вопрос задан

    более двух лет назад

  • 2484 просмотра

Пригласить эксперта

Если закинуть сообщение об ошибке в гугл переводчик, то всё становится понятно:

В файле нет скриптов MonoBehaviour или их имена не совпадают с именем файла

Это Unity-специфичная ошибка, по тому тег C# тут не нужен.

Напомню, что юнити непонятно почему называет классы скриптами


  • Показать ещё
    Загружается…

18 мая 2023, в 06:33

500 руб./за проект

18 мая 2023, в 04:47

1000 руб./в час

18 мая 2023, в 04:36

5000 руб./за проект

Минуточку внимания

Why isn’t my File with No Monobehaviour Scripts Working in Unity?

  • Gary Vanpelt

  1. First and foremost, it is important to understand the role of Monobehaviour Scripts in Unity and why they are necessary. Monobehaviour Scripts are the building blocks of Unity and they control most of the properties and behavior of each GameObject. Without Monobehaviour Scripts, it is not possible to create interactive games through Unity.

Monobehaviour Scripts are the foundation of Unity, allowing developers to control and customize the behavior of their creative projects.

If you have a file with no Monobehaviour Scripts, it cannot be used in Unity and will result in errors when trying to build the project. To ensure that your game works properly, you should create Monobehaviour Scripts for each game object.

To create Monobehaviour Scripts, you have to open the Scripts file and click the Add Component button. The Monobehaviour Scripts for the game object will then appear in the Inspector panel.

For detailed instructions on how to create Monobehaviour Scripts, please read Unity’s guide on Creating and Using Scripts.

FAQ

Q: What is a Monobehaviour Script?
A: A Monobehaviour Script is a set of instructions written in a script language such as C# or JavaScript that is used to control the behavior of GameObjects in Unity.

Q: What do Monobehaviour Scripts do?
A: Monobehaviour Scripts allow you to control the properties and behavior of game objects in Unity, such as the physics, sound, animations, and more.

Q: How do I create Monobehaviour Scripts?
A: To create Monobehaviour Scripts, open the Scripts window and click the Add Component button. Then, choose the type of Monobehaviour Script you would like to use for the game object.

Q: Why do I need Monobehaviour Scripts?
A: Monobehaviour Scripts are necessary to create interactive games in Unity. Without Monobehaviour Scripts, it is not possible to control the behavior and properties of game objects.

Q: Will my file work in Unity if it has no Monobehaviour Scripts?
A: No, a file without Monobehaviour Scripts will not work in Unity and will result in errors when trying to build the project. To ensure that your game works properly, you should create Monobehaviour Scripts for each game object.

Great! You’ve successfully signed up.

Welcome back! You’ve successfully signed in.

You’ve successfully subscribed to Lxadm.com.

Your link has expired.

Success! Check your email for magic link to sign-in.

Success! Your billing info has been updated.

Your billing was not updated.

Unity Fast Tutorial: ошибка = невозможно добавить скрипт

Привет всем, я работал над своей первой игрой, и внезапно я получил эту ошибку и не могу запустить игру. Я уже установил новую версию unity, но она не исчезла. Я вижу, что это может быть вызвано несколькими причинами, но пока не повезло. Вы знаете наиболее вероятные причины и как их исправить?

Когда я выбираю сценарии, единственная ошибка, в которой я не получаю эту ошибку, – следующая:

using UnityEngine; using Assets.Code.States; using Assets.Code.Interfaces; public class StateManager : MonoBehaviour { private IStateBase activeState; void Start () { activeState = new BeginState (this); } void Update () { if (activeState != null) activeState.StateUpdate(); } void OnGUI() { if (activeState != null) activeState.ShowIt (); } public void SwitchState(IStateBase newState) { activeState = newState; } } 

Но, например, здесь я получаю ошибку:

using UnityEngine; using Assets.Code.Interfaces; namespace Assets.Code.States { public class BeginState : IStateBase { private StateManager manager; public BeginState (StateManager managerRef) { manager = managerRef; Debug.Log ('Constructing BeginState'); Time.timeScale = 0; } public void StateUpdate() { if (Input.GetKeyUp(KeyCode.Space)) manager.SwitchState(new PlayState (manager)); } public void ShowIt() { if (GUI.Button (new Rect (10, 10, 150, 100), 'Press to Play')) { Time.timeScale = 1; manager.SwitchState (new PlayState (manager)); } } } } 

И так далее со всеми остальными сценариями.

Я уже установил более новую версию unity3d, удалил антивирус, проверил имена файлов, но ошибка не исчезла. У меня также нет класса в пространстве имен ..

  • Если какой-либо из ответов сработал для вас, было бы полезно для других, если вы примете этот ответ. Если нет, не стесняйтесь комментировать полученные ответы или обновлять свой вопрос.

Убедитесь, что ваш файл сценария назван точно так же, как класс MonoBehaviour, который он содержит.

MyScript.cs:

using UnityEngine; public class MyScript : MonoBehaviour { } 

Кроме того, если ваш файл сценария содержит вспомогательные классы, убедитесь, что они размещены внизу файла, а не над подклассом MonoBehaviour.

Кроме того, Unity иногда будет иметь проблемы, когда ваши классы MonoBehaviour находятся в пространствах имен. Я не знаю, когда именно это происходит, это просто время от времени. Удаление класса из пространства имен устраняет ошибку.

  • BeginState не является сценарием MonoBehaviour, поэтому сообщение «в файле нет сценариев MonoBehaviour» является допустимым. Это действительно ошибка или просто информация? Когда возникает ошибка?
  • Я понимаю о чем вы, но игры не запускаются, при нажатии play ничего не происходит
  • Для этого должна быть другая причина. Убедитесь, что вы очистили консоль. Если ошибки по-прежнему отображаются, значит, вам необходимо исправить их. Если их нет, можно будет начать. Если ничего не происходит, возникают проблемы во время выполнения, которые могут вызывать или не вызывать сообщения об ошибках. Тогда вам придется отлаживать.
  • Если у вас нет ошибок и ничего не происходит, я бы посоветовал вам подключить отладчик, установить точки останова и посмотреть, что именно не работает должным образом.

Tweet

Share

Link

Plus

Send

Send

Pin

[C#] “No MonoBehaviour scripts in the file…”

Every C# file I bring into Unity received the following error when I view the file in the inspector: “No MonoBehaviour scripts in the file, or their names do not match the file name.”

I have been unable to find any solution or indicator of why this is happening. Even C# scripts generated by Unity via right-click->create will provide the error. I created TestScript, which shows as TestScript.cs.

using UnityEngine;
using System.Collections;

public class TestScript : MonoBehaviour {

// Use this for initialization
void Start () {

}

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

}
}

I asked this on Unity Answers and received no help. Does anyone have any insight?

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