現行のUnity3Dでユニティーちゃんに歌って踊ってもらう

現行のUnity3D(以下Unityと表記)でユニティちゃんライブステージ! -Candy Rock Star-(CRS)を動かそうとするとエラーや警告が出て動かないので、原因と解決手順を残す。

必要なもの

利用した諸々のバージョンは以下の通り。

Unity3D
2018.3.8f1 Personal
ユニティちゃんライブステージ! -Candy Rock Star-
1.0
UnityScript2CSharp
1.0.7003.16529

原因

そもそもの原因は、Unity 2018.3.0からUnity Scriptがサポートされなくなり、CRSで利用されている"Standard Assets"に含まれるUnity Script製の処理が動作しなくなったことにある。

Unity Scriptを現行のUnityで利用できるC#に変換する事が問題解決の糸口となる。

解決手順

UnityScript2CSharpという、Unity ScriptをC#に変換するためのツールが公式で用意されているのでそれを使う。

途中コマンドプロンプトによる作業が必要になるので、色々簡単にするため作業フォルダをCドライブ直下に作るUnityWorksフォルダ(C:\UnityWorks)として記録する。

まず、公式サイトからユニティちゃんライブステージ! -Candy Rock Star-をダウンロードし、C:\UnityWorksに展開する。

次にgithubのプロジェクトページからコマンドライン版のUnityScript2CSharpをダウンロードし、C:\UnityWorksに展開する。

ここまででC:\UnityWorks の構造は画像のようになる。

このままでは変換に必要なファイルが足りないので、足りないファイルを補うため一度CRSをUnityで開く必要がある。

開くシーンファイルは、C:\UnityWorks\unitychan-crs-master\Assets\ScenesにあるMain.unity

CRSが作られたバージョンより新しいUnityでプロジェクトを開くことになるため、再インポートの問い合わせダイアログが表示される。Continueをクリックし、処理を続行する。

Unityが起動し、コンソールにエラーや警告が表示されるがここでは無視する。

先の再インポート処理でunitychan-crs-masterフォルダ以下に、LibraryやLogsなどのフォルダが生成される。

次にUnityScript2CSharpを使うために、メモ帳などを使用してbatファイルを作成する。Unityは起動したままでよい。

内容は以下の通り。Unityのインストール先などは必要に応じて書き換える。

REM Unityをインストールしたフォルダへのフルパス
SET UNITY_EDITOR_PATH="C:\Program Files\Unity"

REM CRSのプロジェクトが入っているフォルダ
SET TARGET_DIR="unitychan-crs-master"

REM UnityScript2CSharpが入っているフォルダ
SET US2CS_DIR="UnityScript2CSharp_1.0.7003.16529"

%US2CS_DIR%\\UnityScript2CSharp -p %TARGET_DIR% -u %UNITY_EDITOR_PATH% -s UNITY_EDITOR
pause

これを、C:\UnityWorks直下に適当な名前で保存する。ここではus2cs.batとする。

batファイルをダブルクリックして実行すると、コマンドプロンプトが開き変換が実行される。

ここでもエラーや警告が表示されるが無視する。適当なキーを押しコマンドプロントを閉じる。

Unityの方に戻ると、プロジェクトの更新が検知され、古いAPIが使われているので自動で更新する旨を確認するダイアログが表示される。I Made a Backup.Go Ahead!をクリックし、更新してもらう。

コンソールにはまた違ったエラーや警告が表示されるが、シーンの再生にあたって障害になるのは以下のSystem.Security.Policyに関するエラーだけ。

該当ファイルを開き、using System.Security.Policy;をコメントアウトするか行を削除し、保存する。

以上で変換作業は完了となる。Unityでシーンが再生できることを確認する。