ビルドボタンが押下できない
Project Settings →
Color Space が Linear
Lightmap Encoding が High Quality
だと WebGL 1.0 ではビルドできないらしく
Auto Graphics API チェックを外し、 Graphics APIs を WebGL 2.0 にすることでビルドが可能になった。
ビルドエラーが起きてビルドが出来ない
Project Settings → Decompression Fallback にチェックをつける
StandaloneFileBrowserのファイルブラウザーがエラーになる
そもそもWebGL版のみAPIが違うので、色々と組み替えないといけない。
#if UNITY_WEBGL && !UNITY_EDITOR
//
// WebGL
//
[DllImport("__Internal")]
private static extern void DownloadFile(string gameObjectName, string methodName, string filename, byte[] byteArray, int byteArraySize);
// Broser plugin should be called in OnPointerDown.
public void OnPointerDown(PointerEventData eventData) {
DownloadFile(gameObject.name, "OnFileDownload", "sample.png", _textureBytes, _textureBytes.Length);
}
// Called from browser
public void OnFileDownload() {
output.text = "File Successfully Downloaded";
}
#else
//
// Standalone platforms & editor
//
public void OnPointerDown(PointerEventData eventData) { }
// Listen OnClick event in standlone builds
void Start() {
var button = GetComponent<Button>();
button.onClick.AddListener(OnClick);
}
public void OnClick() {
var path = StandaloneFileBrowser.SaveFilePanel("Title", "", "sample", "png");
if (!string.IsNullOrEmpty(path)) {
File.WriteAllBytes(path, _textureBytes);
}
}
#endif
Webブラウザで確認できない
ビルド後のindex.htmlをそのまま開いても立ち上がらない。
WebServer for Chrome などで、ビルドした先を指定してWeb Server URL(s)へアクセスしてみると動作した。
AsyncGPUReadback.Requestが動作しない
まあそうだ、という感じですが別スレッドで動くAPIは失敗します。
こういうのをちまちま潰していくとWebGL版で動くようになると思いますが、スレッド実行しまくってるプロジェクトを対応させるのは面倒そう…。
FontFallbackに対応していない
デフォルトのテキストを使用するとArialが指定されていますが、WebGL版ではUnity が テキストの描画で使用する OS のデフォルトフォントは指定できないため、フォールバックフォントが見つからず描画されないのだと思います。
[blogcard url=”https://docs.unity3d.com/ja/2018.4/Manual/class-Font.html”」
対策は、言語ごとにttfを変えてテキストのフォントを変える、という感じでしょうか。
ひとまずは日本語であればNoto Sans Japanese が良いかも。