大家好,我一直在处理我的第一场比赛,突然间我遇到了这个错误,无法运行游戏,我已经安装了新版本的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,卸载了防病毒软件,检查了文件名,但错误仍然存在。我在命名空间中也没有任何类..
答案 0 :(得分:2)
确保您的脚本文件的名称与其包含的MonoBehaviour类完全相同。
MyScript.cs:
using UnityEngine;
public class MyScript : MonoBehaviour
{
}
此外,如果您的脚本文件包含帮助程序类,请确保它们位于文件的底部,而不是在MonoBehaviour子类的顶部。
此外,当您的MonoBehaviour类位于名称空间中时,Unity有时会遇到问题。我不知道到底发生了什么,它不时地做。将类从命名空间中取出可以修复错误。