「このメソッドはこのスクリプトに実装するべきだよなー」とか、保守や修正等を考えると
各オブジェクトで役割をキッチリ分けておくべきです。
そんな時に出てくる問題としてスクリプトのメソッドがあるかと思います。
例えば、『Aボタンを押したらプレイヤーがジャンプする』
イメージとしては下記な感じが理想かと。。。
ここでは「コントローラー」側で「プレイヤー」のメソッドを呼ぶ方法を紹介します。
まず、「プレイヤー」側のメソッドを他のスクリプトからも呼べる様にするためにメソッドに[public]を付けます。
↓こんな感じ
//////////////////////////////////////////////////////// ※プレイヤースクリプト内
//ジャンプ実行;
public void Jump()
{
//プレイヤーをジャンプさせる
}
////////////////////////////////////////////////////////
次に、「コントローラー」側から「プレイヤー」のメソッドを呼びます。
まずは宣言
////////////////////////////////////////////////////////※コントローラースクリプト内
GameObject Player_Obj;
////////////////////////////////////////////////////////
次に「プレイヤー」オブジェクトを取得します。※赤文字箇所はオブジェクト名で指定
////////////////////////////////////////////////////////※コントローラースクリプト内
void Start ()
{
Player_Obj = GameObject.Find("Player");
}
////////////////////////////////////////////////////////
取得したオブジェクトのメソッドを実行します。
※<>内はスクリプト名を指定し、最後の赤文字はメソッド名を指定する
////////////////////////////////////////////////////////※コントローラースクリプト内
void Update ()
{
//マウスクリック;
if(Input.GetMouseButtonDown (0))
{
//ジャンプ実行;
Player_Obj.GetComponent<Player_Control>().Jump();
}
}
////////////////////////////////////////////////////////
これで他のゲームオブジェクトのScript内のメソッドを実行することができます。