うどんてっくメモ

技術的なメモをまったりと

Unity開発で使うライブラリ(アセット)備忘録

この記事はNitmic Advent Calendar 13日目の記事になります
いい加減UnityじゃなくてCGの話しようと思ったんですけどとりあえずそれは来週にでも回そうかと・・・
今回は自分がゲーム開発する際によく使うライブラリだったりアセットだったりをまとめようかなと思い、書きました
早い話が前回のデバイス紹介のライブラリ編です
またお前かよみたいな感じですけどお暇な人は読んでみてください


1.UniRx

1つ目は自分のもっとも使っているライブラリ、UniRxです
Rx(Reactive Extensions)というのは所謂リアクティブプログラミングをObserverパターンを用いて実現させるためのライブラリを指します
それをUnity向けに作ったのがUniRxというわけです
イベントストリームという、イベントを時系列の流れとして捉える処理が特徴的であり、非同期処理などに長けています
ゲームで言えば何秒後かに処理するといったタイマー処理だったり、一連の動作が行われたかどうかを待機する処理などが書きやすいですね


2.Vuforia

2つ目はARライブラリ、Vuforiaです
主に短期インターンハッカソンでお世話になりました、簡単なARコンテンツを作る際に重宝しています
マーカーベースのARコンテンツを作る際に、ほとんどの工程を担ってくれます(マーカーベースというのは任意の画像をかざすことでコンテンツを提供するもののことです)
画像をかざして3Dモデルを出すという基本工程ならばコーディングが要らないほどに簡単なので試してみてはいかがでしょうか


3.SocialWorker

3つ目はSNS連携を行うSocialWorkerです
Unityといえばアプリ開発であり、アプリといえばSNS連携が欠かせなくなってきています
SocialWorkerは特に難しい記述も必要なく、アプリ内でのSNS投稿がサクッと出来ちゃいます
サポートしているのはiOS/AndroidでのTwitterFacebook、Line、Instagram、メールです
もちろん連携してデータを色々と使ったりなど柔軟なことをする場合には自分でAPIを叩いてやるべきだと思いますので、簡易的な投稿機能などがほしいときに使ってみるといいでしょう


4.DOTween

4つ目はアニメーションライブラリ、DOTweenです
イラストが変化しつつ遷移していくようなアニメーションのことを一般的にTweenアニメーションと呼びます(フェードしてきたり、拡大縮小したりなど)
そのTweenアニメーションをUnityで実現するためのライブラリで、自分がTweenアニメーションを実装する際に一番使うものです
特徴的なのがアニメーションをシーケンスという連続した流れで捉えることができることですね
複数のアニメーションを動的に結合したり、同時に処理したりなど、多様な使い方をすることができます
初心者の方でも扱いやすく、表現の幅がぐんと広がるのでおすすめです


5.Julius

5つ目は音声認識ライブラリ、Juliusです
その名の通り、音声を認識してそれを文字列に起こしたりすることができます
単純な音声認識なら割とすぐ出来てしまうので、ちょっとしたアプリを作るときに役立ちます
ただ、会話などをするには精度など様々な点で難しいところがあるので、ピンポイントなワード認識用って感じです


6.Zenject

6つ目はDIフレームワークであるZenjectです
自分が秋ごろに書いた記事でも説明した、Unityの設計においてDIコンテナを採用する際に用いるものです(詳しい説明はその記事を読んでいただければ!)
Unityでシングルトンを用いて設計を行うと割と密結合になってしまったり、肥大化したシステムでサイクルがとっ散らかったりしまったりして自分はあまり好きではないです
Zenjectを用いて必要なパーツを提供する機構を導入してあげるとそういった点がかなりスッキリするので自分は積極的に使いたいなと思っています


7.NGUI

7つ目はUIライブラリであるnGUIです
Unityには標準でuGUIというUIを実装するためのサポートシステムが存在しますが、それよりもより自由度と難易度を上げたのがnGUIになります
少し癖が強いですが、3D空間上のUIやテキストと画像混合のアニメーションなど、使いこなすと広い表現が可能になります
ただnGUIでしか出来ないということが割と限られていたり、uGUIと処理の細部が違っていたり(イベント処理がraycastじゃなくてcolliderだったり)するので積極的な採用をするよりは使いどころを見極めるべきものだと思います


いかがでしたでしょうか、所謂コンテンツの表現を伸ばすものと、そもそものコーディングをアシストするものを紹介しました
後者に関しては、ライブラリ一つで構造がすっきりするというのは割とよくある話なのでまずは試してみてはいかがでしょう
導入しただけで開発期間が大きく短縮されるのはよいことですし、あるものはどんどん活用していきましょう(勿論それなりの理解をした上でですが)
また機会があればこれらのライブラリの活用例であったり簡単な解説を記事にしようかなと思います