UnityでVRM対応ブラウザゲームを作る
UnityでVRM対応ブラウザゲームを作る方法について
https://gyazo.com/80f6a10ff659dcbad1cc419b007840dc
Run Jump VRM
三行で
VRMが使えるゲームがぽこじゃが増えるとうれしい。
UnityのWebGL→unity roomで公開すると手軽
やっぱりVRMはUnityでやると楽
つくりかた
参考記事
UnityのWebGL出力でHTMLのファイル選択ダイアログを表示して外部ファイルを読み込む
「Unity」WebGL出力でダイアログからVRMを読み込む
ここに書いてあることがほとんどです。
*.iconUnityのバージョンは2018.4.2f1
UniVRM
UnityでVRMを読み込むためにUniVRMをインポートします
最新のUniVRM-***.unitypackageをダウンロードする
ダウンロード先
インストール方法
UnityEditorのProject上からImport Package -> Custom Package
またはUniVRM-***.unitypackageをダブルクリック
https://vrm.dev/univrm/univrm_install/
モデルの確認
AssetsにVRMをドラッグ&ドロップすると読み込まれる。
Prefabが生成されるのでそれをシーンにおけば使える。
ユーザーモデルを読み込まないならこれでOK
uGUI上からファイルを読み込む
ユーザーのローカルなモデルをダイアログから読み込ませたい
「Unity」WebGL出力でダイアログからVRMを読み込む
ここに書いてある通りにやります。
FileImporter.jslibの作成
ImportButton
uGUIのボタンを作成
Pointer Downイベントに対してImportButton.OnButtonPointerDown()を割り当てる
WebGLビルド
プラットフォームをWebGLにする
File > Build Settings.. (Ctrl + Shift B)
PlatformのWebGLを選択する
https://gyazo.com/6f128bc37481d897b1257fd963e92433
Build And Run
フォルダの選択が出るので出力用のフォルダを用意しておくとわかりやすい
結構時間がかかった
ビルドが終わるとブラウザが開いてゲームが実行される。
unityroomにアップロード
unityroomはUnity(WebGL)専用のゲーム投稿サイト
とても簡単に公開できる
結構投稿するひとが多くて楽しい
Unity1週間ゲームジャムなどイベントが定期的に開催されている
#unity1week
ホントは参加したかったけど間に合わなかった
unityroomにアップロード
【unity】unityroomに投稿する方法を参考に投稿する
出力先に指定したフォルダ > Build 以下にあるファイルをアップロードする。
実際にブラウザから遊べるか確認する
はまったところ
x.iconダイアログの拡張子をVRMにしたい
ファイル入力の時にデフォルトの拡張子をVRMにしたい。
fileInput.setAttributeのところで.vrmを指定する。
Assets>Plugins>FileImporter
code:jslib
fileInput.setAttribute('accept', '.vrm')
https://qiita.com/torikasyu/items/bc45f51f855f332a64f7
https://qiita.com/mechamogera/items/89d4555b202af96810af#ugui上からファイルを読み込む方法
x.iconエディター上でモデル読み込みしたい
いちいちビルドするのは大変
読み込みボタンを押した時の動作をWebGLとEditorで分岐させる
参考
https://github.com/torikasyu/UnityWebGLVRM/blob/master/Assets/ImportButton.cs
code:c#
public void OnButtonPointerDown()
{
#if UNITY_WEBGL && !UNITY_EDITOR
FileImporterCaptureClick();
#else
LoadFromFile();
#endif
}
x.iconボタンを押した後に一度画面をクリックしないとダイアログが開かない
ImportButton.OnButtonPointerDown()をButton.OnClickから呼んでいたのが原因でした
EventTriggerをアタッチしてPointerDownから呼ぶように設定する
参考記事ではPointerDownで呼ぶって書いてあったのに見落としてました。
x.icon ビルドして実行しているとAn exception has occurred…というダイアログが出る
ソースコードをいじっていないのに
An exception has occurred, but exception handling has been disabled in this build. If you are the developer of this content, enable exceptions in your project's WebGL player settings to be able to catch the exception or see the stack trace.
というダイアログが出るようになってしまいました。
原因はわからなかったのですがとりあえず
PlayerSetting > PublishingSetting > EnableExceptionsをExplicitly Thrown Exception Onlyに設定したところ動作しました。
が、動かない例もあるらしいです
https://forum.unity.com/threads/webgl-build-doesnt-work-when-explicitly-thrown-exceptions-only-enabled.832627/
_.iconVRMモデルの大きさがそれぞれ違う
当たり判定が見た目と合わない
未解決
つくったもの
Run Jump VRM
https://gyazo.com/80f6a10ff659dcbad1cc419b007840dc https://unityroom.com/games/runjumpvrm
ただ走って障害物を超えていくだけ
当たり判定の大きさは固定
デフォルトモデルくらい用意しておけば良かった
よかったら遊んでみてください。
#VRM #Unity #web #月曜日だYATTA