アバターのカスタマイズや、Beat Saber ではカスタムセイバー、カスタムノーツ、カスタムプラットフォームの作成など、ゲーム開発とは関係ない部分で Unity を使う場面が増えています。ゲームは作ったことないけれど Unity はちょっと触れる、という方もいらっしゃるかもしれません。
とはいえ、Unity はいちおう開発ツールですから、触ったことがない、使い方どころか、どうやってインストールするかさえわからない、という方も多いのではないでしょうか。
今回は、ゼロ知識の状態から Unity のインストールを行い、制作物をビートセイバー内に持ち込むところまで、簡単に解説してみようと思います。前編ではごくシンプルなカスタムプラットフォームを、後編 (次回) では無料の Unity アセットを読み込んで手軽にプラットフォームを作ってみます。
とにかく完成品だけ欲しい、という方は一番下までスクロールしてください。
まず、Unity のインストールを行います。ここで重要な点ですが、Unity のバージョンによっては、制作物が Beat Saber で読み込めない形になってしまう場合があります。わたしの経験上、一番問題がなかったバージョンとして、Unity 2019.4.18f1 をおすすめします。
ちなみに Beat Saber (1.23.0 現在) は Unity 2019.4.28f1 でビルドされていますが、それなら 2019.4.28f1 が最適だろう、とはならないので注意です。2019.4.28f1 を使用すると問題が出る場合があるので避けてください。
まず、以下の「Unity Hub をダウンロード」をクリックして、インストーラー (UnityHubSetup.exe) をダウンロードします。
https://unity3d.com/jp/get-unity/download
Unity Hub は複数の Unity バージョンや、Unity プロジェクトをまとめて管理するための Hub となるソフトです。
インストーラーのダウンロードが完了したら、それを起動します。[同意する]、[次へ]、と進めて、インストールを完了してください。
Unity Hubを実行にチェックを付けて完了。チェックをはずして完了してしまった場合も、デスクトップにできている Unity Hub を普通に起動すれば大丈夫です。
Unity Hub の初回起動時にはファイアウォールの警告が出ますが、[アクセスを許可する] で問題ありません。
起動すると、このような画面になります (環境や設定によっては日本語で表示されているかもしれません)。Unity を使用するにはアカウントが必要なので、アカウント作成を行います。[Create account] をクリックします。
ブラウザが開いて、Unity アカウントの作成画面に移ります。メールアドレス、ユーザー名、パスワード、フルネームを入力して [Create a Unity ID] をクリックします。
よくあるユーザー登録の流れと同じように、このあと入力したメールアドレスに Unity から確認メールが届き、その確認メール内のリンクをクリックして、確認、ログインを行うと登録が完了になります。
最終的に下記のようなアカウント画面が出てくれば OK です。
アカウント登録が完了したら、さきほどの Unity Hub に戻って [Sign in] をクリックします。またブラウザが開きますが、下記のようなメッセージが表示されたら [Unity Hub を開く] をクリックします。
Unity Hub が使用できるようになりました。[Got it]、日本語の場合は [OK] ボタンかもしれませんが、ボタンをクリックします。
まだ Hub をインストールしただけで Unity 本体は入っていないので、Unity Editor のインストール画面が出てきます。ただよく見ると、インストールしようとしているバージョンは 2021.3.4f1 で、これは Beat Saber 用には使えません。[Skip installation] (インストールをスキップ) をクリックします。
Unity を使用するにはライセンスが必要、というメッセージが表示されます。今回は無料ライセンス (Personal Edition License) の範囲で使用します。ライセンスの内容、詳細は Unity のサイトでご確認ください。[Agree and get personal edition license] (同意する) をクリックします。
このような画面になるので [Install Editor] をクリック。
[Archive] をクリック。
[download archive] をクリック。
ブラウザが開き、Unity の過去バージョンの一覧ページへと移ります。Beat Saber 用に Unity 2019.4.19f1 をインストールしたいので、まず [Unity 2019.x] をクリックします。
下のほうへスクロールして、2019.4.19f1 の右にある Unity Hub をクリックします。ここで確認メッセージが表示されたら [Unity Hub を開く] をクリックします。
Unity Hub に戻ると、このようなインストール画面になっているはずです。このまま [Continue] (次へ) をクリックします。
チェックボックスをクリックして、[Install]。
するとこの画面に戻りますが、裏ではインストールが進行しています。Install Unity Editor の横の × (右上の Unity Hub の × ではなく) を押して閉じます。
インストールが進行中。待ちます。
[Install complete]、インストール完了しました。
これから作成するカスタムプラットフォームの動作確認のため、Beat Saber に CustomPlatforms mod をインストールしておいてください。ModAssistant でインストール可能です。
これから Unity を使用してカスタムプラットフォームを作成するわけですが、プロジェクトを一から新規作成するのではなく、雛形となるテンプレートを開いて、そちらを編集していく形になります。
テンプレートは下記のページで配布されています。まず、こちらを開いてください。
https://github.com/affederaffe/CustomPlatforms/releases
[Assets] のところをクリックすると、ダウンロードできるファイルの一覧が展開されます。[UnityProject.zip] をクリックしてダウンロードします。
ダウンロードした zip ファイルを展開すると、中に CustomPlatforms というフォルダが入っています。このフォルダが Unity のプロジェクトになります。
このままだとわかりにくいので、CustomPlatforms フォルダをどこか自分の決めた保存場所にコピーして、名前を変更してください。ここでは適当に C:\test にコピーして、CustomPlatforms_Sample という名前にしました。
新しいプラットフォームを作成するときは、毎回このようにテンプレート (CustomPlatforms フォルダ) をコピーして、カスタムプラットフォームのフォルダを作成してから始めます。
Unity Hub を開きます。左の [Projects] をクリックして、右上の [Open] の左にある [▼] をクリックして出てくるリストから [Add project from disk] (プロジェクトを追加) をクリックします。
さきほどのカスタムプラットフォームの雛形、ここでは CustomPlatforms_Sample を選択して [Add Project] をクリックします。
このように追加されました。なにやら黄色い!マークがついていますが無視してかまいません。
この CustomPlatforms_Sample をクリックして開くと、このような画面になります。[Choose another Editor version] (別の Editor バージョンを選択) をクリックします。
2019.4.19f1 が選択されていることを確認して、[Open with 2019.4.19f1] をクリックします。
[Change version] (バージョンを変更) をクリック。
[Continue] をクリック。
おなじみの画面?Unity Editor が開きました。Unity の一番下に黄色い!マークがついていますが、このメッセージに関しては無視してかまいません。
もし、このような画面が出たときは [Check for Updates] (アップデートのチェック) を外して、[Skip new version] (新バージョンをスキップ) をクリックします。
はじめに「Unity の画面がおかしな状況になって、戻せなくなってしまった」という場合の対処を書いておきます。[Window] → [Layouts] → [Revert Factory Settings] と選択すると、ウィンドウのレイアウトが初期設定に戻ります。覚えておきましょう。
また、ファイルの保存もしておきましょう。[File] → [Save] と選択して (または Ctrl + S)、ファイル名をつけて保存します。次回以降は上書き保存になります。Unity は何の前触れもなく突然エラーで落ちることがあるので、頻繁に保存するようにしましょう。(でもわすれる)
中央の薄い青と灰色が見えている部分は、Unity 上で配置したオブジェクトが表示される 3D 空間です。空間内を動き回るため、これだけ覚えておいてください。
- マウスを右クリックしながらマウス移動: 視点を上下左右に向ける
- マウスのホイール: 視点の前後移動
- マウスのホイールを押しながらマウス移動: 視点の上下左右移動
キーボードでの視点操作も可能です。こちらも知っておくと良いかもしれません。
- オブジェクトを選択してF: オブジェクト付近に視点移動、視点回転
- マウスを右クリックしながらW/A/S/D/Q/E: 視点の前後左右上下移動
- マウスを右クリックしながらShift+W/A/S/D/Q/E: 視点の前後左右移動 (高速)
視点がよくわからないところにいってしまった場合は、前述の [Revert Factory Settings] で初期位置に戻すことができます。
なお、好みによりますが、ここでは Unity は英語のまま使用します。日本語の言語パックをインストールすると日本語表示も可能ですが、本来訳すべきでない部分 (コンポーネント名やプロパティ名など) までが日本語になってしまうので翻訳の裏を読む必要があったり、情報を検索するときに英名がわからないと困る (日本語名での情報はかなり少ない)、というのが理由です。
まず、カスタムプラットフォームのルート、土台、階層の起点となる部分を作成します。プロジェクトのルート (ここでは Test というファイル名で保存したので、Test になっています) をクリックして [GameObject] → [Create Empty] を選択します。
GameObject だとわかりにくいので名前を変更します。GameObject を右クリックして [Rename] (または GameObject を選択して F2) で名前を変更できます。好きな名前でかまいませんが、ここでは TestPlatform としておきました。
TestPlatform (カスタムプラットフォームのルート。以降では TestPlatform と書きますが、自分で付けた名前に読み替えてください) を選択して、画面の右を見ると下のような表示になっているはずです。
Transform というのは座標情報をまとめたもので、TestPlatform の位置が x, y, z = 0 (原点)、角度も x, y, z = 0 (回転なし)、大きさは x, y, z = 1 (等倍)、という意味になっています。なお、x は左右、y は上下、z は前後 (奥行き) と考えてください。
もし、Test Platform がこのようになっていない場合は、下と同じになるよう変更しておいてください。
この TestPlatform ですが、現時点では、ただの GameObject をリネームしただけです。これをカスタムプラットフォームとして出力できるようにします。
TestPlatform を選択した状態で、[Add Component] をクリックします。そのままテキスト入力欄にカーソルが移るので、「cu」と入力するとリストが絞り込みされます。その中から [Custom Platform] を選択します。
このようになります。ここでは以下のような設定が可能です。
Plat Name: プラットフォームの名前
Plat Author: プラットフォームの作者名
Icon: アイコン
Hide Environment: デフォルトのプラットフォームオブジェクト (プレイヤーの足場や、ノーツが飛んでくるレーン、レーザーなど) のどれを非表示にするか
- Highway: ノーツが飛んでくるレーン
- Towers: 左右にあるタワー状の建物
- Default Platform: プレイヤーの足場
- EQ Visualizer: 音に反応して大きさを変えるオブジェクト (イコライザー)
- Small/Big Ring: 回転するリング状のオブジェクト (小/大)
- Back Columns: 背後にある柱状の建物
- Back Lasers: 奥に光る ^ のような形のライト
- Double Color Lasers: 正面に並ぶレーザー光 (奥)
- Rotating Lasers: 正面に並ぶレーザー光 (回転)
- Track Lights: トラックの左右にあるライト (ないプラットフォームも)
ここでは下のように入力してみます。Plat Author はご自分の名前に置き換えてください。Hide Environment すべてにチェックをつけているので、すべてのオブジェクトが非表示になった、なにもないプラットフォームができます。
下の [Export] ボタンを押すと、カスタムプラットフォームの plat ファイルとして出力されます。ファイル保存ダイアログが表示されるので、Beat Saber のインストール先にある CustomPlatforms フォルダに保存してください。
Steam 版 Beat Saber のデフォルトインストール先の場合は
C:\Program Files (x86)\Steam\steamapps\common\Beat Saber\CustomPlatforms
となります。
成功するとこのように「Exportation Successful!」と表示されます。現在はまだ何もしていないため基本的にエラーは起こりえませんが、プラットフォームを作る過程で Unity 内のファイルやオブジェクトがエラーを起こした状態になっていると、出力に失敗します。その場合、まずエラーを解決させてからでないと出力できません。
今しがた出力した Nothing.plat の動作確認をしてみましょう。Beat Saber を起動して CustomPlatforms の設定を開くと、Nothing がリストに入っています。これを選択して譜面をプレイすると、設定した通り、プレイヤーの足場もレーザーも何もないプラットフォームになっているのがわかります。
つぎは床を作ってみましょう。TestPlatform を右クリックして、[3D Object] → [Plane] (平面) を選択してください。余談ですが、ただの平面を作るときは [Quad] (四角形) のほうがポリゴン数が少なく済むのですが、今回の用途では Quad ではうまくいきませんでした。(おかげでここ以降、ぜんぶ書き直して、スクリーンショット撮りなおすことに…)
Plane が追加されましたが、もっと大きくしようと思います。Plane を選択して Transform を変更しましょう。これを…
このように変更します。Scale に 100 を入れて大きさを広げました。もし Position と Rotation が 0 でなければ、すべて 0 にしておいてください。
次は、Plane を選択した状態で、右下の [Add Component] をクリックします。そのままテキスト入力欄にカーソルが移るので、「mir」と入力するとリストが絞り込みされます。その中から [Track Mirror] を選択します。
このように Track Mirror が追加されます。これにより、このオブジェクトは Beat Saber 内ではプレイヤー足場の鏡面床と同じような表示がされるようになります。
ここまでできたら、カスタムプラットフォームのファイルを出力するため、再度、TestPlatform を選択します。
Plat Name を変更します。今回は MirrorFloor としました。また Hide Environment も、Hide Back Lasers、Hide Double Color、Hide Rotating Lasers のチェックを外して、一部レーザーを表示するようにしました。
[Export] をクリックして、Beat Saber の CustomPlatforms フォルダに保存します。
巨大な鏡面床があるプラットフォームが完成しました。なお、ビートセイバーの設定で反射 (Reflection) 無効にしてあると動作しません。
今回作成したプラットフォーム 2 つ、Nothing.plat、MirrorFloor.plat の完成品を置いておきます。
今回はごくシンプルなプラットフォームを作成しただけでしたが、Unity からカスタムプラットフォームを出力する流れが、なんとなくわかったのではないかと思います。次回はもっと複雑なオブジェクトを Unity に持ち込んで、それをプラットフォームとして出力し、Beat Saber に持ち込んでみたいと思います。
なるるるるな / NALULUNA
2022-07-30 12:33:06 +0000 UTCなるるるるな / NALULUNA
2022-07-30 12:31:55 +0000 UTCなるるるるな / NALULUNA
2022-07-30 12:29:50 +0000 UTCNeko-Hangten
2022-07-15 10:01:36 +0000 UTCティルエ
2022-07-08 12:41:07 +0000 UTCなるるるるな / NALULUNA
2022-07-01 18:25:45 +0000 UTCトウモロコシ
2022-07-01 10:56:40 +0000 UTCなるるるるな / NALULUNA
2022-06-21 01:02:11 +0000 UTC東京にゃんこTokyoCat
2022-06-20 20:48:51 +0000 UTCなるるるるな / NALULUNA
2022-06-20 14:09:28 +0000 UTCJAN
2022-06-20 14:03:19 +0000 UTC