- デバッグ専用処理の分岐
大体以下の3種類
if(Application.isEditor) // Unityでゲームを起動した時true if(Debug.isDebugBuild) // build settingでdevelopment buildのときと、Unity側で起動したときtrue #if UNITY_EDITOR // Unity側で起動するときこの部分がコンパイルされる #endif
iOSだけ、PS4だけの処理などもできる
Platform Dependent Compilation
グローバル#defineの定義
Edit > Project Settings > Player > Player Setting > inspectorでother setting > scripting define symbols
ここで、;区切りでそれぞれシンボルが#defineされる敵の弾の有効化・無効化
敵の弾は敵の子オブジェクトにして発射時にそれを複製して飛ばしたいが、敵生成時にプレイヤーと当たるとそこで衝突判定が行われてしまい、
弾が消えて複製元の弾を失ってしまう。
弾だけ座標を遠くするやり方はしなくないので、enabledを操作しようと思ったが、うまくいかなかった。
最終的にレイヤーを作成して、Edit > Project Setting > Physics2D からそのレイヤーの衝突判定を無効化して、
弾を発射するときに弾のレイヤーを0(デフォルト)にして対処した。PlayerPrefsにVector3、クオータニオンやそれらの配列など、標準で保存できない値を保存する
ArrayPrefs2
内部的に文字列に変換して保存している模様。音声の2重再生を防ぐヘルパー関数
void StopAndPlay(AudioSource audio) { audio.Stop(); audio.Play(); }
- 他のスクリプトから音声を再生
GameObject.Find("SoundManager").SendMessage("Attack");
(SendMessage()は何でも出来過ぎてしまうので多用はためらわれるが、これ以外に良い方法が思いつかなかった)