今回の記事では以下のような要望を解決します!
- データ(変数の値)を色んなオブジェクト(スクリプト)から使いたい
- シーン遷移させても値が残っていて欲しい
まずは、スクリプトを用意
DataManager.csというスクリプトを作成し、中身は↓
public class DataManager : MonoBehaviour { private static DataManager instance; public static DataManager Instance{ get{ if( null == instance ){ instance = (DataManager)FindObjectOfType(typeof(DataManager)); if( null == instance ){ Debug.Log(" DataManager Instance Error "); } } return instance; } } void Awake(){ GameObject[] obj = GameObject.FindGameObjectsWithTag("DataManager"); if( 1 < obj.Length ){ // 既に存在しているなら削除 Destroy( gameObject ); }else{ // シーン遷移では破棄させない DontDestroyOnLoad( gameObject ); } } }
その後、空のGameOjectを作成し↑のスクリプトをアタッチする。
そのGameObjectにタグ名を「DataManager」と付ける。
これで完成。
使用方法
・DataManagerに適当な変数を用意
public int hoge;
他のスクリプトからこの値を参照したい時は↓のようにする
DataManager.Instance.hoge = 3; int huga = DataManager.Instance.hoge;
っと、こんな感じで簡単に使用することができます。
DataManagerに変数以外に関数を作成したりし、SoundManagerみたいなものもコレで作成できます。
コメント