unityroomでAddressableに対応する
〜前回までのあらすじ〜
- Addressable導入後はじめてビルドする -> エラー
- Addressableは本体とは別で、Addressableアセットのビルドが必要 -> ローカルでは動くようになる
- WebGLの場合、AddressableアセットはStreamingAssetsに配置されるのでunityroomでは外部サーバに置く必要があると判明
- とりあえずCloud Content Deliveryを試す -> エラー
- Addressableの設定で本番ビルドではリモートを参照するように設定したが、設定がloader.jsに行き渡ってない -> WebGLテンプレートを作ってみるもののloader.jsには影響してくれなかった。。ので自分で書き換えないとダメそう
- CCDのSDKを入れるとアセットをビルド&アップロードまでしてくれるが、ビルド設定がWebGLなのになぜかスタンドアロン版用ではと思われるファイルしか上げてくれない
- さくらのレンタルサーバで試す -> エラー
- CORS(それはそう)
CORS問題はGithub Pages利用で解決できそうと判明。
ただCORSヘッダーは自動付与かつ全ドメイン許可なのと
商用利用不可だったりと、やや懸念もある。
と思って他の静的ホスティングサービスを探してみた感じ
CloudFlare Pagesがかなり良さそうだった。
ちょうど最近ヘッダー設定も可能になったのもgood
あとはloader.jsのパス設定がどういう流れで決まってるかを調べる。
loader.jsのstreamingAssetsUrl
はどうも単にデフォルトの定義っぽくて
変えたいときはindex.htmlのテンプレートを作ってアップロード先のサーバー構成に合わせて上書きしなさいよね的なことっぽい。
ただunityroomの仕様上index.htmlはアップロードしないので
loader.jsのほうを直接リネームする必要がある模様。
幸いloader.jsの中には"StreamingAssets"
なる文字列は一回しか出てこないので
ビルド後にここを自動で書き換えるスクリプトを用意することにする
Unity外でやってもよいけどUnityのPostProcessでいけそうな雰囲気
<余談>
まだ再現してないけど、↓のStrip Engine Code
の話を見かけたので
これに引っかからないかちょっと心配
この辺りを参考に、プロジェクト設定として置換するURLを登録できるようにした
おまけ的にGithub Actionで自動ビルドしてCloudflare Pagesにアップロードできるようにしてみてる。
初回のLibraryキャッシュがない状態だと正直かなり遅い(30分とか平気でかかっている)
Github Actionの制限
Cloudflare Pagesの制限
Cloudflare Pages、まだ出たばかりで情報少なめなのと、機能が豊富すぎて逆に険しさがあった...
Github Pagesにするやも。
Cloudflare PagesのGithub連携を使う+Github Pages用のアクション(中身はたぶんgitにpushしてるだけで実はGithub Pages専用ではない)を組み合わせたらいけた。
めっちゃ見たページ
できたのでソース公開して記事にしました
〜完〜