Unity2019.2.2f1
Windows10
□
列挙型(enum)とは基本的に変更しないデータを扱う型で、コードを読みやすくするのに便利です。
今回は例としてNavMeshAgentを使うスクリプトを紹介します。
切り替える行動が2つ3つ程度だとBool変数などでも対応できますが、それ以上増えるとどの変数がどれを指しているのか分かりにくくなります。
そんな時に列挙型を使うと分かりやすくなり便利です。
今回作ったのはこちらの動画です。
赤いCubeは黄色のSphereを順にたどっていきますが、緑のCubeが接触すると5秒間追跡してきます。
そして追跡時に触れると回転して攻撃してきます。#unity pic.twitter.com/iuz2JhhBm0— イシゲー@Blender始めました (@ishidahanta) October 14, 2019
赤いCubeは巡回、追跡、攻撃の3つの行動をします。
そのスクリプトはこちら。
enum Action{}で宣言しますが、このActionの部分は私が考えた型の名前です。
そしてAction actionで変数を宣言します。
If文ではその変数と型の名前、列挙子(列挙型の中身のデータ)を使いました。
そしてOnCollisionEnterでもその時の選択されていた列挙子によって命令が変わるようになっています。
Patrolが巡回。
ChaseがPlayerの追跡。
Attackが回転。
それら3つの列挙子で赤いCubeの行動を管理しました。
Bool変数などを使うよりもずっと分かりやすくなっていると思います。
ちなみにInspecotrではこのように列挙子が選べるようになっています。
■関連記事
【UnityC#講座】ユニティちゃんをモブキャラのごとくランダム移動させる【NavMeshAgent】
【UnityC#講座】重複なく配置したCubeをひとつずつ消して行くCubeのゲーム(?)【NavMeshAgent】
スポンサーリンク