こんにちは!ねこっちです!
今日はゲーム開発をする中で学んだ、Unityの変数の受け渡しについて、自らの備忘録も兼ねて書いていきたいと思います。
変数は同じシーンか違うシーンかで、受け渡し方法が違うので注意してください!
同じシーンでの変数の受け渡し
同じシーンでの変数の受け渡しは2つの種類があります
- 同じオブジェクトについた違うスクリプトの変数の取得
- 違うオブジェクトについた違うスクリプトの変数の取得
1はスクリプトにクラスの変数を作り、そこにGetcomponent<クラス>();をして読み込む
2はGameObjectの変数の箱にGameObject.Find(“オブジェクト名”);をしてオブジェクトを見つけてきた後に、1と同じくGetcomponentをする
違うシーンでの変数の受け渡し
違うシーンでの変数の受け渡しは2つの種類があります
- public static として受け渡したい変数を宣言する
- プロパティ(get,setを用いたプログラムのこと)を用いて呼び出す
1はpublic static int a=10などを、呼びだされる方に記入する。呼ばれる方のスクリプトにはint b=スクリプト名.a;と書き代入する。
この方法は簡単にできるが、注意点としてどのスクリプトにstatic変数を書いたか忘れずに把握する必要がある
2は今までと違い少し複雑ですが、外部から変数をいじることが出来ないのでバグが起こりづらいというメリットがあります。
プロパティの書き方
呼び出される側は、
public class Called: MonoBehaviour
{
private int num;
public int GetSetProperty
{
get {return num};//ゲッター(呼び出したスクリプトがnumを参照できる)
set {num = value};//セッター(valueはセットする数字を反映する)
}
}
プロパティを使うことでprivateな変数にもアクセスできるようになる。
呼び出す方は
public class Call: MonoBehaviour
{
private Called called;
void start()
{
called=new Called();//インスタンス化
//ゲッター。スクリプトCalledのnumの数値をint callNumに代入する
int callNum=called.GetSetProperty;
//セッター。スクリプトCalledのnumの数値を書き換える
called.GetSetProperty=10;
}
}
このように記述することで、違うシーンでも変数の値にアクセスできるようになります。
本日は以上です!
コメント