1. ホーム
  2. c#

[解決済み] Unity3dのMonobehaviourスクリプトがファイル内にないか、ファイル名と名前が一致しません。

2022-02-01 12:45:59

質問

こんにちは、皆さん。私は最初のゲームを作っていたのですが、突然このエラーが出て、ゲームを実行することができません。私はそれがいくつかの理由で発生する可能性があることを参照してください、しかし、これまで運がなかった、あなたは、最も可能性の高い原因とそれを修正する方法を知っていますか?

スクリプトを選択すると、このエラーが出ないのは以下のものだけです。

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のサブクラスの上にではなく、ファイルの下に配置するようにしてください。

また、MonoBehaviourのクラスが名前空間の中にある場合、Unityは時々問題を起こします。これはいつ起こるかわからないのですが、単に時々起こるのです。クラスをネームスペースから外すと、エラーは修正されます。