オブジェクトにスクリプトをアタッチすると "Can't add script"エラーが発生しスクリプトをアタッチできない - Unity

Unityでオブジェクトにスクリプトをアタッチすると "Can't add script"エラーが発生しスクリプトをアタッチできない現象と対処法を紹介します。

現象

作成したスクリプトファイルをオブジェクトにドラッグ&ドロップしてオブジェクトにアタッチできない場合があります。


アタッチすると下図のエラーメッセージが表示されます。


スクリプトファイルはあるのに"Can't add script"のメッセージが表示されます。

原因

ファイル名とクラス名が異なる場合に上記の現象が発生します。

正しくアタッチできるスクリプト

Play.cs
using UnityEngine;
using System.Collections;

public class Player : MonoBehaviour {

	// Use this for initialization
	void Start () {
	
	}
	
	public float speed = 5;
	
	// Update is called once per frame
	void Update () {
		float x = Input.GetAxisRaw ("Horizontal");
		float y = Input.GetAxisRaw ("Vertical");
		Vector2 direction = new Vector2 (x, y).normalized;
		rigidbody2D.velocity = direction * speed;
	}
}

上記エラーが発生するスクリプト

Play.cs
using UnityEngine;
using System.Collections;

public class MyScript01 : MonoBehaviour {

	// Use this for initialization
	void Start () {
	
	}
	
	public float speed = 5;
	
	// Update is called once per frame
	void Update () {
		float x = Input.GetAxisRaw ("Horizontal");
		float y = Input.GetAxisRaw ("Vertical");
		Vector2 direction = new Vector2 (x, y).normalized;
		rigidbody2D.velocity = direction * speed;
	}
}

ファイル名とスクリプトのクラス名が一致していいない場合、アタッチ時に先の"Can't add script"メッセージが表示されアタッチができない状態になります。スクリプト生成時に設定した名前からスクリプト名を変更した場合はクラス名もスクリプト名と同じ名前に変更されていることを確認する必要があります。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2014-08-29
iPentec all rights reserverd.