【Unity】オブジェクトをスプリクトから取得したい

超初心者のころに分からなかったことのメモ

参考:Unityを使ってゲーム作成にチャレンジ Vol.3: 「2D縦スクロール シューティング」を作ってみよう (中高生向けUnity入門)

オブジェクトをスクリプトから取得したい

//private変数だとインスペクターで関連を付けられない

private GameObject gamaManager;

//だからスクリプトで呼び出す
//これがオブジェクトGameManagerを取得する方法

gameManager = GameObject.Find("GameManager");

//そこからコンポーネントにアクセスする例
gameManager.GetComponent<ScoreManager>().AddScore(3);

//まとめて記述することもできる
scoreManager = GameObject.Find("GameManager").GetComponent<ScoreManager>();
scoreManager.AddScore(3);

なぜスクリプトから取得するのか?

p214より
敵はScene上にはいないため、作成されたタイミングでスクリプトからの取得が必要。

なぜprivateを使うのか?

初心のころの記憶。

「全部publicでもいいんじゃね?」

privateは他から値を更新されにくいのが特徴。
複数人での開発での事故を防ぐ。

p169より
isBossModeを確認するGetBossMode()関数は必要なのか?
なぜ直接isBossModeがはいらないのか?

//ScoreManagerの記述より
private bool isBossMode = false;
public bool Get_BossMode()
{
	return isBossMode;
}

//EnemyManagerより
if(class_ScoreManager.Get_BossMode() == false)

isBossModeをpublic変数にして、
if(class_ScoreManager.isBossMode == false)でも可能。

参考:Unityを使ってゲーム作成にチャレンジ Vol.3: 「2D縦スクロール シューティング」を作ってみよう (中高生向けUnity入門)

コメント

タイトルとURLをコピーしました