Posted at

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

More than 3 years have passed since last update.


なぜこんなもんを書く?

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配列で渡すこと