バナナラボ

Vtuber美作ワニのブログです

【バナナラボ通信】Vol.2『ゲーム制作する時に使いたい機能紹介』

こんばんは、バナナラボの美作です。 今日はUnityでこれを使うと便利という機能を紹介したいと思います。

コルーチン

Unityの初期から存在している機能ですが、使い方さえ間違わなければ今でも十分利用できる機能です。 コルーチンは複数のフレームを跨いだり、特定の秒数を待機してから処理を実行したい場合に利用するUnity標準の機能です。 docs.unity3d.com

メリット

Unity標準であり、基本的にバージョンアップにも耐えられ、基本設計的にどのシステムにも組み込みやすいというメリットがあります。
またGameObject(MonoBehaviour)と紐づけてでなければ実行できないので寿命のコントロールも非常にやりやすいです。

待機処理の種類も標準でかなり使いやすいものが揃っています。 時間待機のWaitForSeconds、条件待機のWaitWhileあたりはよく使うようになると思います。 UnityEngine.WaitForSeconds - Unity スクリプトリファレンス UnityEngine.WaitWhile - Unity スクリプトリファレンス

またIEnumeratorを利用するため、独特なコードの記述にはなりますがそこまで癖が強いわけでもないので触っていけば自然になれるのではないかと思います。

デメリット

GameObject(MonoBehaviour)と紐づけてでなければ実行できない」とさっき述べたように、寿命のコントロールを失敗するとぶくぶくと処理が膨れ上がる可能性があります。
設計段階の時点でそれぞれの処理がどのようにして終了するのか意識する必要があるため、ここを怠るとあっという間にバグだらけになってしまいます。

具体的な例としてコルーチンを実行するだけのシングルトンマネージャーに全ての処理を任せた場合、特定のオブジェクトに対してコルーチンを実行している場合に対象オブジェクトが消えた場合、 Nullエラーが発生してしまうリスクが起きるケースがあります。

JsonUtility

Unity標準の機能であり、MiniJsonと比較して高速にSerialize/Deserializeできるという長所を持つ機能です。 docs.unity3d.com

メリット

前述しましたが高速で変換できます。
Jsonが扱えるとデータの管理がしやすくなるというメリットがあり、クラス構造も実現できるため幅広い設計が可能です。
また型自体もかなり幅広く対応されているので基本的なことであれば実現することができます。

デメリット

普通にゲームを作っていく分には十分高速ではありますが、これよりも速い形式が存在しているため拘るのであれば採用は要検討になる。

デメリットではないが注意点

辞書型(Dictionary)に対応していません。たまにDictionaryに対応していないことの不満を見かけることがありますが、クラスそのものをSerialize/Deserializeできるという特長を踏まえると使えないことは自然です。
そのため、本当にDictionaryが必要なのかを改めて検討したほうが良いと思います。

最後に

今回コルーチンとJsonUtilityについて紹介しました。
この2つを使いこなすだけでもかなり幅広い機能に対応できるようになるため、是非覚えて使ってみてください。

YouTubeやってます

www.youtube.com YouTubeやってます!よかったら登録してね!
ゲーム実況・ゲーム制作関係の動画投稿をやってます!!