Unityを使っていて、「他のスクリプトの関数を使いたいな」と思ったことはありませんか?今回は、そのやり方を初心者向けに解説します。基本的な操作が分かっていることが前提です。
publicメソッドを使う
他のスクリプトの関数を呼び出すための基本的な方法は、関数をpublicにしておくことです。これにより、他のスクリプトからその関数にアクセスできるようになります。
例えば、プレイヤーのジャンプを制御するスクリプトがあるとします。
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public void Jump()
{
// ジャンプの処理
}
}
他のスクリプトからこれを呼び出すには、こんな感じです。
using UnityEngine;
public class OtherScript : MonoBehaviour
{
void Start()
{
PlayerController player = GetComponent<PlayerController>();
player.Jump();
}
}
これで、OtherScriptからPlayerControllerのジャンプ機能を使えます。
staticメソッドを使う
もう一つの方法として、staticメソッドを使う方法があります。staticメソッドは、インスタンスを作成せずに直接クラスから呼び出すことができます。
例えば、ゲームの進行を管理するスクリプトがあるとしましょう。
using UnityEngine;
public class GameManager : MonoBehaviour
{
public static void GameOver()
{
// ゲームオーバーの処理
}
}
他のスクリプトからこれを呼び出すには、こうです。
using UnityEngine;
public class PlayerController : MonoBehaviour
{
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.tag == "Enemy")
{
GameManager.GameOver();
}
}
}
これで、敵にぶつかったときにGameManagerのゲームオーバー機能が使えます。
SendMessageメソッドを試す
Unityでは、SendMessageメソッドを使って、オブジェクトに対して任意のメソッドを呼び出すことができます。これは、対象のオブジェクトがどのスクリプトを持っているか気にせずにメソッドを呼び出せる便利な方法です。
例えば、以下のスクリプトがあるとしましょう。
using UnityEngine;
public class TargetScript : MonoBehaviour
{
void DoSomething()
{
// 何か処理
}
}
他のスクリプトからこれを呼び出すには、こんな感じです。
using UnityEngine;
public class OtherScript : MonoBehaviour
{
void Start()
{
GameObject targetObject = GameObject.Find("TargetObject");
targetObject.SendMessage("DoSomething");
}
}
これで、OtherScriptからTargetScriptの処理を呼び出せます。
Unityで他のスクリプトのコマンドを使う方法は、パブリックメソッド、スタティックメソッド、そしてSendMessageメソッドの3つがあります。どれも覚えておくと便利です!