スポンサーサイト



Unityで作ったゲームをWebGLで公開する

Unity(2021.3.4f1)で作った2D脱出ゲームをWebGLで公開する流れ(備忘録)

◆WebGLでビルド ※日本語は絶対に使わない
・「File」→「Build Settings」
・「Platform」が「WebGL」になっていなければ「WebGL」に「Switch Platform」
・「Scenes In Build」にゲームに必要なシーンを追加。
・「Player Settings」を押して「Project Settings」を開く。
・「Player」の「Company Name」には作った人「Aza」、「Product Name」にはゲーム名「Escape01」を記入。
・「Settings for WebGL」
「Resolution and Presentation」の「Default Canvas Width/Height」に「Canvas Scaler」の「Reference Resolution」のX「512」とY「368」の値を入れる。
「Publishing Settings」の「Decompression Fallback」をオン ※サーバの「.htaccess」を編集する方法もあるみたい(参考
・「Project Settings」を閉じて、「Build」を押す。
・ビルド用のフォルダ「bEscape01」を作って「フォルダーの選択」、ビルドが完了するまで待つ(ちょっと時間がかかる)
・サーバに「bEscape01」をアップロード。index.htmlを呼び出す。



◆Chromeのローカルサーバで動作確認したら、Unityで再生した時と全然違う。

「文字がぼやける」
・「Text」の「Font Size」を大きくする。※大きくしすぎるとフォントによってはギザギザが強くなる
・「Horizontal Overflow」「Vertical Overflow」を「Overflow」
・「Rect Transform」の「Scale」を小さくする。



「セーブができない」
・WebGLでは「File.WriteAllText(Application.persistentDataPath~)」は使えなくてセーブ失敗。
・素直に「PlayerPrefs」を使う。ゲームを終了するとき(OnApplicationQuit()内)に記述するのが普通らしいけど、ブラウザゲームの終わる時がよくわからないので、セーブボタンを押したらセーブすることにする。

#セーブ
PlayerPrefs.SetInt("currentRoomNo", currentRoomNo);
PlayerPrefs.Save();

#ロード
currentRoomNo = PlayerPrefs.GetInt("currentRoomNo", 0);

WebGLでPlayerPrefsしたデータは「IndexedDB」に保存される。保存先(参考



「ゲームオブジェクトの移動速度が遅い」
・speedの値を大きくして「Time.deltaTime」をかけたら直った。



「音がズレる(時がある)」
・直し方がわからない。仕様だと思って諦めることにする。



「エラー:warning: 2 FS.syncfs operations in flight at once, probably just doing extra workが頻繁に出る」

・Chromeの「閲覧履歴データの削除」で「Cookieと他のサイトデータ」にチェックを入れて「データを削除」すると「IndexedDB」フォルダ内がクリア。
・そして再びテスト開始。成功したように思えたが、しばらくすると同じエラーが出た。

・WebGLで「JsonUtility」を使ってるからダメなのかも(参考
・「JsonUtility.ToJson」ではなく「string.Join」で文字列にする。「JsonUtility.FromJson」ではなく「文字列.Split」で元に戻す。
・「Array.ConvertAll」を使って、文字列配列を数値配列に一括変換。
・再びテスト。今度こそ成功…ごくごくたまにエラーが出る。もうわからない。諦める。


結論:
Unityの便利な機能に飛びつくのはやめましょう。
その関数は本当にWebGLで使えるの? を調べてから使いましょう。
ある程度完成したらローカルサーバでテストしましょう(Unityでの再生とサーバでの稼働は全然別物!)

デフォルト規格_縦長(合成器素材)

ウディタに付属のグラフィック合成器素材「デフォルト規格」を縦に伸ばしました。

◆デフォルト規格(左)、デフォルト規格_縦長(右)
sample.png


◆問題点
・グラフィック合成器のプレビューで一番下の行(4行目)が表示されない。
ファイル保存するとちゃんと4行あるので安心してください。
img0008b2.png


◆その他
・「頭」+「肌なし」+「服」を選ぶと手足の肌が表示されないので、「肌」に「体のみ」のパーツを追加。

・「肌」、左から「ベース」「ベース_濃」「ベース_褐色」「ベース_人外」
おまけで右二つ(褐色と人外)を追加。
img0008c2.png


◆ダウンロード
デフォルト規格_縦長.zip(7.8 MB)

グレーテルとおじさん(キャラチップ)

グレーテル(墨cm)とおじさん(デフォルト規格)をグラフィック合成器で作成。
おじさんが小さすぎて違和感。
img0007ab.png


ということで、おじさんをグレーテルと同じくらいに拡大(1.32倍)、ドットが潰れまくり。
これを直すのは厳しい。
img0007c.png


縦方向だけ拡大(1.32倍)これは少し直せばいいだけかも。
img0007d.png


縦長にして修正したもの。
img0007e.png


グレーテルとおじさん(縦長)。なかなかいい感じ…あれ?おじさんがまだ小さい。
結論、作者が違うキャラチップは混ぜない方がいいかも。
img0007af.png


縦長に伸ばしたキャラチップを量産するために、グラフィック合成器の「デフォルト規格」を丸ごと縦長にした(あまりの苦行に死ぬかと思った)