本記事の環境
本記事は以下の環境で開発を進めております。
- 開発OS:Windows OS(UnityはMac OSでも同様に開発可能)
- Unity:4.6
- 開発言語:C#
- IDE:Visual Studio 2013 + Visual Studio Tools for Unity(標準のMono Developでも可)
OSについてはWindowsを利用しますが、Macでも同様に開発可能です。IDEにVisual Studioを利用しますが、標準のMonoDevelopでもコードは変わりません。
サンプルプログラムは本記事開始時(第10回終了直後)のプロジェクトが「project_011_start.unitypackage」、終了時点のプロジェクトが「project_011_end.unitypackage」となります。
記事開始時点の状態にする
本記事の開始時点の状態から開発を開始する方法を紹介します。
project_011_start.unitypackageのダウンロード
project_011_start.unitypackageをダブルクリックすることで既存のプロジェクトにproject_010_start.unitypackageが読み込まれます。
新規プロジェクトで開始する場合は、新しいプロジェクトを作成したのち、上部メニューの「Assets」→「Import Package」→「Custom Package」でproject_010_start.unitypackageを読み込んでください。
IDEにVisual Studioを利用しない場合はImport時にUnityVSのチェックを外してください。
以上で本記事開始時の状態のプロジェクトが開かれます。
今回作成するサンプルを実行する
今回作成する内容を実行すると以下のようになります。コードを書き始める前にゴールを確認しておくと理解しやすくなると思います。
- 今回作成するものを確認する(Unity Playerプラグインを許可する必要があります)
タイマー処理の概要
タイマー処理の基本は一定期間おきに処理を実行することにあります。
Unityはゲーム制作のためのフレームワークということで、実は最初からある程度のお膳立てが整っています。これまで記述してきたプログラムの中でも定期的に呼び出されている処理がありました。そう、Updateメソッドです。
Updateメソッド
UnityのGameObjectにスクリプトを追加するとMonoBehaviourクラスを継承したクラスが作成され、初期状態でStartとUpdateの2つのメソッドが記述されていました。
StartメソッドはGameObjectの生成時に一度だけ呼び出される、いわゆる初期化処理を記述するためのメソッドです。Updateメソッドはゲーム中に定期的に呼び出されるメソッドです。定期的に何かを実行するような処理はここに記述していけば良いので、タイマー呼び出しのイベントハンドラ―を記述する手間が省けます。
ゲームオーバー処理
今回のゲームはキャラクターを操作して、ハムスターを捕まえればクリアという想定で作成してきました。ゲームオーバーになるケースはゲーム開始から一定時間が経過してしまうとゲームオーバーということにします。ゲームオーバー処理に必要な手順は以下になります。
- ゲーム開始時の時刻を取得する
- Updateメソッドで開始時刻と現在時刻から経過時間を算出する
- 経過時間を画面に表示する
- 経過時間が制限時間を超えていたらゲームオーバー表示
- ゲームオーバーになる前にハムスターを捕まえたらクリア表示
それでは順番に処理を実装していきましょう。