PlayerがGameManejerの関数を実行させる方法

 

 

GameObject.Findを使用する

void Start( )ないでしかできなかった

GameManagerのスプリクトGManager

public class GManager : MonoBehaviour
{
  public void Kansu( )
  {
    Debug.Log("実行したよ");
  }
}

 

Plaerのスプリクトplayer

public class player : MonoBehaviour
{
  void Start( )
  {
    //Hierarchyにあるオブジェクトを探して取得する
    GameObject Gmo = GameObject.Find("GManager");

 

    //GameManagerのコーポーネント(部品)を取得する
    GManeger Gm = Gmo.GetComponent<GManager>( );
    Gm.Kansu( );
}

 

GameObject.FindWithTagを使用する

void Start( )ないでしかできなかった
オブジェクトGameManagerのタグを例えば"GmTag"とした場合

 

オブジェクトPlaerのスプリクトplayer

public class player : MonoBehaviour
{
  void Start( )
  {
    //Hierarchyにあるオブジェクトのタグを探して取得する 
    GameObject Gmo = GameObject.FindWithTag("GmTag");

 

    //GameManagerのコーポーネント(部品)を取得する
    GManeger Gm = Gmo.GetComponent<GManager>( );
    Gm.Kansu( );
}

 

publicを使用する

一般的な方法
public class player : MonoBehaviour
{
  //変数の宣言InspctorでGManagerのあるオブジェクトをあてる
  public GManager Gm;

 

  void Update( )
  {
    Debug.Log(Gm.Kansu( ));
  }
}

 

static化して使用する

GManagerをどこからでも取得できるようにする

 

関数の実行と値を取得することも出来る
public class GManager : MonoBehaviour
{
  //instanceはどこからでも参照できる変数
  //staticはメモリを確保してずっと存在する
  //classが1つしか使えない
  public static GManager instance;

 

  private void Awake( ) //AwakeはStartより先に実行される
  {
    instance = this;
  }

 

  public int Kansu( )
  {
    int A = 2;
    return A;
  }
}

Plaerのスプリクトplayer

public class player : MonoBehaviour
{
  void Update( )
  {
   Debug.Log(GManager.instance.Kansu());
  }
}

このページの先頭へ戻る