Google

2012年8月15日水曜日

Unityでコインゲー開発:時間短縮その2

残りの時間短縮について続き。

デバッグチートボタン。
これはどんなゲームでも開発中に作って当たり前です。
特に確率だけでゲームしているようなコインゲームの場合、確率当選で出るアイテムなどはテスト時間が長引くため必須です。

これらは開発当初から思いついたものをどんどん入れて行きました。
以下の様なものを入れた記憶があります。

 ・コイン残枚数のリセット
 ・全体のリセット
 ・抽選で当たる値の事前予約

こんな小ネタでさえもやらないという人が以外と多いのですが、そういう癖を付けると中期スパンでの時間に大きく影響します。

じゃあデバッグボタンをどの機能で作るかというと、UnityではGUIクラスが普通でしょうか。

 Unity API Refernce GUI.Button

上のサイトでもあるように簡単に書けるのですが、この処理は気づきにくい特性があります。それは、、、

 iOS版ではOnGUI関数が必ず毎フレーム呼び出されてしまう

という嫌な現象です。
そもそもUnityはデスクトップ上と実機では、FPS等の細かい動作が違うのが当たり前なのですが、遅めのiPhoneだとそこそこ変わってきてしまってあー面倒、って事がよくありました。
そのため、OnGUIは関数自体も含め、本番時に全て消せるようにするのが常識となっていました。

もう一つ、デバッグモードの概念も必要です。
UnityにはDevelopment Buildというモードがあり、これは「File」→「Build Settings...」から開いたダイアログでオプション設定を行えます。


 公式解説はこちら。
 Unity API Reference Debug Build

これがオンだとMonoDevelopでブレークして追えたりとか色々できるというものですが、これを判断するためのフラグが以下。

 Debug.isDebugBuild

この変数が真の時はDevelopment Buildがオンなのです。
デバッグなんだか開発ビルドなんだか間際らしいですが、どっちももともと同じような意味なのでそれは良しとして。
もっと大事なことが以下。

 Development Buildは、XCodeのデバッグビルドとはまた別物

なんだかややこしいことばかり書いてますが(汗

要は、UnityのデバッグモードはUnityのなかだけで通用する概念なのです。
Unityが吐き出したXCodeでのデバッグ、リリース、ディストリビューションはまた別の概念です。

ここを間違えるとデバッグの概念がごちゃごちゃしてきますのでご注意を。

なんか書いてて変な方向に行ってしまいましたが。
次回は「列挙体を書かない」で高速化する方法です。

0 件のコメント:

コメントを投稿