Tiny Character Controller をインストールしよう

# 1. Tiny Chacater Controller とは何か

Tiny Character Controller（以下、TCC）は、GitHub上で無料公開されている、**キャラクターの挙動を複数の小さなコンポーネントを組み合わせて実現するシステム**のことです。

具体的には、**「Brain」「Check」「Control」「Effect」** という4つの基本的なコンポーネントを組み合わせることで、キャラクター挙動の構築・カスタマイズを簡単にしてくれます。

各コンポーネントの説明は、[リポジトリ](https://github.com/unity3d-jp/Project_TCC)下部の解説ドキュメントに記載されています。

# 2. TCC のインストール

[インストールガイド](https://github.com/unity3d-jp/Project_TCC/blob/main/Documentations/SystemInstallGuide.md)に沿って、自身のUnityプロジェクトにTCCをインストールしましょう。ひとまず、一番上にあるキャラクター制御のパッケージ（com.utj.charactercontroller）をインストールしてみます。すると、画像のように膨大なエラーメッセージが表示されました。

<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3470968/7ad772b7-1858-59e6-a7c8-b5c02c77765d.png">

# 3. エラーへの対処

エラーメッセージを見ると、パッケージの不足が原因であると分かります。そのため、パッケージマネージャーから **「Mathematics」「Burst」「Collections」** パッケージをインストールしましょう。すると、画像のようにエラーメッセージが1つだけ残りました。

<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3470968/70e047f8-dde7-d695-d35f-91e05b1ad099.png">

その内容は、「AnimatorUpdateModeにFixedの定義がないよ」というものです。エラーメッセージを開いて定義元にジャンプすると、「AnimatorUpdateMode」というenumには、「Normal」「AnimatePhysics」「UnscaledTime」の3つの変数しか定義されていないことが分かります。

調べてみたところ、「AnimatorUpdateMode.Fixed」は、同じ意味で使用されることの多い「AnimatorUpdateMode.AnimatePhysics」で代用できるそうです。したがって、エラー箇所を **「AnimatorUpdateMode.AnimatePhysics」** に書き換えましょう。
 
 これで、最後のエラーメッセージがなくなったことを確認できると思います。

<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3470968/02e1ac42-eae0-6c78-6f64-1bd8cc53dfcc.png">

**・・・なんとエラーメッセージが新たに1つ増えてしまいました。** 

エラーメッセージを見ると、オーバーライドする適切なメソッドが見つからないことが原因であると分かります。件の「Editor.CreatePreview」メソッドですが、確かにEditorクラスの定義元を探しても見つかりません。

調べたところ、[このメソッド](https://docs.unity3d.com/6000.0/Documentation/ScriptReference/Editor.CreatePreview.html)は **Unity 6 Preview でのみサポートされているようです。** 
Unity 6 Preview とは、Unity Technologies が開発中の次世代バージョン「Unity 6」のプレビュー版のことを指します。

気を取り直して、Unity 6 Preview（6000.0.3f1）で新しくプロジェクトを作成します。
**「Mathematics」「Burst」「Collections」** パッケージをインストールするところまでは同じです。すると、先ほどとは異なり、 **この時点で全てのエラーメッセージが消えています。**

試しに「AnimatorUpdateMode」の定義元を見てみると、「Normal」「Fixed」「UnscaledTime」「AnimatePhysics」の4つの変数が定義されていることが分かります。
また、「Fixed」と「AnimatePhysics」は同じ値が与えられていますね。

「Editor」の定義元も見てみましょう。「CreatePreview」が定義されていることが確認できるはずです。

これにてようやく、キャラクター制御のパッケージ（com.utj.charactercontroller）を無事にインストールすることが出来ました！

続いて、フォルダとして扱えるGameObjectのパッケージ（com.utj.gameobjectfolder）をインストールしてみます。すると、エラーメッセージは1つも出ませんでした。

次に、ゲームの進行データを保存するパッケージ（com.utj.savedata）をインストールします。こちらも、エラーメッセージなくインストールすることが出来ました。

テキストからゲームで扱いやすい台本を抽出するパッケージ（com.utj.scenarioimporter）も同様にインストールできると思います。

では、残る1つのパッケージ（com.utj.sceneloader）をインストールしましょう。これは、シーンをGameObjectのように読込・解放するパッケージです。すると、画像のようにエラーメッセージが表示されます。

<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3470968/883e570d-5c8b-5969-eb03-bf3e5d461971.png">

エラーメッセージによると、型または名前空間の「AddressableAssets」が見つからないとのことなので、パッケージマネージャーから **「AddressableAssets」** パッケージをインストールしましょう。すると、全てのエラーメッセージが消えました。

これで、 **TCC を自身のプロジェクトにインストールすることが出来ました！**

# 4. まとめ

TCC を自身のプロジェクトにインストールするにはどうすればいいか？

:::note info
　Unity 6 プレビュー版のプロジェクトを用意する。
:::

:::note info
「Mathematics」「Burst」「Collections」「AddressableAssets」
上記4つのパッケージをインストールする。
:::

以上です。ご覧いただきありがとうございました。