2nd term 1st week - dsuz/csharp GitHub Wiki
今回のテーマ
- enum(列挙型)
- オブジェクト指向プログラミング - カプセル化
- コーディング規約
準備
- CSharp2-1-1.unitypackage をダウンロードして Unity のプロジェクトにインポートする
- Project のフォルダ "2-1 enum" の下にある 2DTopView シーンを開いて実行し、動くことを確認しておくこと
enum(列挙型)
ゲームを作っていると、フラグが増えてきてその管理が煩雑になったりする。また、状態管理の際に、状態を 0, 1, 2 などで管理したくなることがある。(例: ゲーム開始 = 0, ゲーム中 = 1, やられた = 2, クリアー = 3)
このような時に enum を使うと、新しい名前を持つ定数を定義することができる。
例題
- 2DTopView シーンは「紫のエリアに入ると毒を受け、ライフが減っていく」「黄色のエリアに入ると麻痺して、移動速度が遅くなる」「ライフが 0 になると死んでしまい、動けなくなる」「水色のエリアに入ると、毒・麻痺は回復する」という仕様になっている
- 毒・麻痺・死の状態はそれぞれ _isPoisoned, _isParalyzed, _isDead というフラグで管理されている
- これらのフラグを一元化し、プレイヤーの状態を表す _state で管理するようにプログラムを修正せよ
参考資料
- 『独習 C# 新版』
- enum
- 9.3.1 列挙型の基本
- 9.3.2 列挙型のさまざまな宣言
- 9.3.3 列挙型の正体
- enum
備考 1
Unity では、enum のフィールドを [SerializeField]/public でインスペクター上に表示すると、ドロップダウンリストから選択できて便利である。
備考 2
今回の例では、「毒かつ麻痺」というような2つの状態が重なるようなことはしておらず、各ステータスは排他的になっている。これを「毒かつ麻痺」のように2つ以上の状態が重なるようにしたければ、もう一段階手間をかける必要がある。そのような時は、「ビットフラグ」として状態管理をする。「Unity ビットフラグ enum」で検索するとよいでしょう。
参考
カプセル化
次のページで「オブジェクト指向(プログラミング)の 3 大要素」の一つである「カプセル化」について説明する。
コーディング規約
次のページで「プログラミングの書き方」「書けるだけでなく、"読める" コードを書く」ための知識として、「コーディング規約」について説明する。