Unity3d文件中没有Monobehaviour脚本,或者它们的名称与文件名不匹配

时间:2015-12-27 17:43:28

标签: c# unity3d

大家好,我一直在处理我的第一场比赛,突然间我遇到了这个错误,无法运行游戏,我已经安装了新版本的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,卸载了防病毒软件,检查了文件名,但错误仍然存​​在。我在命名空间中也没有任何类..

1 个答案:

答案 0 :(得分:2)

确保您的脚本文件的名称与其包含的MonoBehaviour类完全相同。

MyScript.cs:

using UnityEngine;

public class MyScript : MonoBehaviour
{
}

此外,如果您的脚本文件包含帮助程序类,请确保它们位于文件的底部,而不是在MonoBehaviour子类的顶部。

此外,当您的MonoBehaviour类位于名称空间中时,Unity有时会遇到问题。我不知道到底发生了什么,它不时地做。将类从命名空间中取出可以修复错误。