[UNITY]2DRPG開発日誌 #13 アタッチしてないのに「アタッチしないで!」のエラー

MonoBehaviorを継承していないスクリプトのエラーについて

スクリプタブルオブジェクトなどでMonoBehaviorを継承していないスクリプトを作ったとき、

※こんなのです

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

public class WeaponData : ScriptableObject // ←

これはMonoBehaviorを継承していないのでオブジェクトにアタッチすることはできません。

アタッチされていると

The script 'スクリプト名' does not derive from MonoBehaviour, but has been added to Game Object 'オブジェクト名'. Please remove the script from the Game Object to avoid crashes.

というエラーが発生します。

アタッチされているオブジェクトはProjectウインドウで右クリック→Find Reference in Sceneで探すことができます。このコンポーネントを削除すれば解決のはずです。

 

…ところが、そのスクリプトがどのオブジェクトにもアタッチされていないのに上記のエラーが発生しました。

 

色々調べたところ、原因は「アタッチはされていたけど、スクリプト名を変更したので検索してもヒットしなかった」というものでした。

初めにMonoBehaviorを継承した状態でオブジェクトにアタッチし、そのスクリプトの中身を書き換えてMonoBehaviorを外し、さらにスクリプトのファイル名を変えてしまうとFind Reference in Sceneで探すことができなくなります

※スクリプトはアタッチされていますが、Find Reference in Sceneで検索してもヒットしていません。

たぶん検索する方法はないので、地道に記憶を辿りながら探しましょう。