【Unity】Pluginsフォルダーのスクリプトから本体スクリプトを呼び出したい


なぜこんなもんを書く?

Unityでは特殊フォルダー(Plugin, Editor, Resourcesなど)があり、Pluginフォルダーから本体(特殊フォルダー以外の外部スクリプト)に直接アクセスできない仕組みらしい

アクセスするにはどうすれば良い?

結果から言うとこんな感じでアクセスできる

void Start ()
{
    // 実行中にManagersという名前のゲームオブジェクトを探す
    var GUIMessageHelper = GameObject.Find ("Managers");
    // ゲームオブジェクトに付いているコンポーネントを名前から探す
    var comp = GUIMessageHelper.GetComponent ("GUIMessageHelper");
    // 呼び出したいメソッドのパラメータを作る。ここではDictionary<string, string>型
    var messageDic = new Dictionary<string, string>
    {
        { "MapPos", transform.position.ToString()}
    };

    // コンポーネントから呼び出したいメソッド名、パラメータ順で呼び出せる
    comp.SendMessage ("AllPlatformGuiMessages", messageDic);
}

注意点

・ゲームオブジェクトは実行中に必ず存在すること(上記ではManagers)
・そのゲームオブジェクトに必ずコンポーネントが存在すること(上記ではGUIMessageHelper)
・SendMessageから呼び出すメソッド名とパラメータは必ず一致すること
・SendMessageで複数パラメータを渡したい場合はクラスを作るかObject配列で渡すこと