Unity 3 DパッケージWebGL項目

2701 ワード

会社のもとの手遊びはユニティ3 Dプロジェクトなので、WebGLを包装する方式を選択しました.出会った問題を記録してください.他に必要な友達がいて、自分で調べやすいです.
ユニティ3 D 公式サイト
    https://docs.unity3d.com/Manual/webgl.html
    まず一回見る必要があります.ブラウザの互換性、メモリ関連、ネット関連、ページjavascriptとの対話などの知識を紹介しています.
Aset Bundle
    まず一つの問題は、ゲームのロード方式を変えることです.元々は一つのバッグにすればいいです.ダウンロードして携帯にインストールして、プロジェクトの中にはAssset Bundeleを包装するプランもありますが、役に立ちませんでした.ページツアーは完全パッケージを読み込むことができません.テストした後に作ったカバンは200 MBより小さいです.Assset Bundleを使用しなければならないので、メインプログラムをできるだけ小さくしてください.そして、Assset Bundleの使用方法も違います.ハンドボールはゲームを起動した後、リソースファイルのリストとバージョンを確認して、ファイルを更新して、ローカルにゲームを使用します.ページツアーはブラウザキャッシュを使っています.上がってきたら全部ロードすることができません.必要なリソースを徐々にロードするしかないです.
    最終的に修正されたメインプログラムは大体15 MBぐらいで、作ったカバンはまだ大きいです.もっと縮減できるはずです.各種の圧縮後のAssset Bundele資源ファイルは全部で110 MBぐらいです.画質を少し犠牲にしましたが、仕方がありません.圧縮パラメータHigh Quallity 30は、一般的なスタンプ(シーン、特殊効果など)、必要に応じて、キャラクターの精度を調整する必要があります.UI画像、Atlas図集などの圧縮パラメータHigh Qually 80-90は、これはあまりにもハードに抑えられません.
いくつかの使用するプラグインとコード
    https://github.com/sta/websocket-sharp
    ネットワーク接続はWebSocketに変更する必要があります.このライブラリを使って、自分の関連コードを変更します.サーバーも関連調整が必要です.しかし、このライブラリが提供しているUnity Aset Storeのプラグインはもうアクセスできないようです.
    https://github.com/kongregate/Unity-WebGL-Utilities
    を選択します.ちなみに、Unity 2018.2は正式にWebAssembleをサポートした後、WebAssembleを使ってasmを使う時はパッケージパラメータの中のメモリを比較的大きい値に設定しなくてもいいです.動作時にダイナミックに成長できるので、比較的新しいブラウザのカーネルサポートが必要です.国内のゲーム環境が制限されているので、しばらく考えません.
    https://blog.csdn.net/blog_lee/articale/details/79173141 Unity WebGLは中国語IME入力を実現します.
    https://github.com/unity3d-jp/WebGLNativeInputField
    包装したWebGLの端は入力法が使えません.ここには解決策があります.元々のプラグインの表示方法はあまり良くないです.この文章の作者は修正と最適化を行いました.
いくつかの問題
    自分でコードを書く必要があります.内蔵されていない、使用されているsharderをProject Settings-Graphics-Always Included Shadersに追加します.そうでないと、ゲームを開始したらピンクがいっぱいになります.
    Uncaght Type Error:this.decomppress is not a function このエラーが発生した時、このようなスレッドで言及された修正下でUnityLoader.jsコード:
var options = ["this.require = ",decompressor.require,"; var vv = this;this.decompress = ",decompressor.decompress,"; this.onmessage = ",function(e){var t={id:e.data.id,decompressed:vv.decompress(e.data.compressed)};postMessage(t,t.decompressed?[t.decompressed.buffer]:[])},"; postMessage({ ready: true });"];
    TypeError:Canot read property'enumerate Devices'of undefined これは最近QQゲームホールで会ったのですが、まだChrome 43のカーネルです.本当に古いです.開発者のプラットフォームもあまりよくないので、突っ込みます.この方法はカメラとマイクの関連があるようです.Chrome 45以降に加入したものです.どうせ使えないです.ユニティ3 D包装ツールのコードを直接検索しました.(そもそも論理的にも問題があるような気がしますが)包装したら間違いないです.
 
    現在はUnity 3 D 5.6.6バージョンを使用していますが、一旦思いつくのはこれだけです.今後も問題があれば記録を続けます.