コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】The associated script can not be loaded. Please fix any compile errors and assign a valid script.

f:id:baba_s:20140430185010p:plain

今日、Unityでゲームを開発していたら、上記のような警告が表示されて
アタッチしているコンポーネントが動かない
(AwakeやStart、Update関数が呼び出されない)不具合に遭遇しました

調べてみたところ、
名前空間の中にMonoBehaviourを継承したクラスの定義が記述されたスクリプト内で
関数を呼び出す時に名前付き引数を使用
すると、上記のような現象に遭遇するようです

using UnityEngine;

// 名前空間の中に
namespace Scenes
{
    // MonoBehaviourを継承したクラスの定義が記述されたスクリプト内で
    public class TitleScene : MonoBehaviour
    {
        private void Awake()
        {
            // 関数を呼び出す時に名前付き引数を使用すると
            // このコンポーネントが動かなくなる
            Log(message : "Title Scene");
        }

        private void Log(string message)
        {
            Debug.Log(message);
        }
    }
}

ちなみにデフォルト引数を使った場合も同様の現象が発生します