UnityのWebGL出力でファイル選択ダイアログを表示して外部画像ファイルを読み込ませるのに少し手こずったのでメモ

画像を読み込み変更

上記のようにファイルダイアログを表示させて画像を読み込ませる機能を追加しようとして結構手間取ったのでメモ。 以下で使用しました。

OpenUIEasecheck | フリーゲーム投稿サイト unityroom

下記サイトを参考にしています。ただUnityの新しいバージョンでは少し書き換えが必要 qiita.com

以下に自分が変更した箇所と注意点を書きます。

注意点1.Unityでjslibファイルに日本語を(コメントも)書くとエラーの可能性あり

ビルド時に以下のエラーが発生

UnicodeDecodeError: 'cp932' codec can't decode byte 0x81 in position 55456: illegal multibyte sequence

ビルド時にエラー

どうも関数に日本語が入っているとダメっぽい?

参考サイト qiita.com

注意点2.jslibファイルでunityのcanvasidが#canvasからunity-canvasに変更

unityのcanvas id の定義がある時期を境にunity-canvasに変更されている。

そのためcanvasidを利用したコードは必要に応じて#canvasからunity-canvasに変更する必要がある。

このidの場所については

インストールしたUnityのバージョンフォルダの

Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\WebGLTemplates\Defaultのアドレスにある、

index.htmlファイルを見ることで確認できる。

index.htmlファイルの中

参考サイト qiita.com

メモ WWW形式は旧形式とかでるのでUnityWebRequestでやってみようとしたのですが、texture2dのところがうまくいかなかったのでWWW形式のままで行いました。

追記:rawimage にすると

UnityWebRequest uwr = UnityWebRequestTexture.GetTexture(url);

rawimage.texture = ((DownloadHandlerTexture)uwr .downloadHandler).texture;

でよりシンプルになるが、ImageとRawimageどちらを使うのがいいのかいまいち分からない。

変更後のコード

https://help.hatenablog.com/entry/developer-option?_gl=1*ojnx55*_gcl_au*NzA5NzY1Mzc3LjE3MTA2NTgyODA.