相変わらずUnity研究に没頭ですが、仕事で気づいたことなのでメモしとく。
まず、グラフィックAPIです。実はGoogle Pixel Tabletでアプリをテストしたところ、重い処理全然入れてないのに、15fpsも厳しかった。
確かにGoogle Pixel Tabletの解像度はFullHDより高いの2560x1600ですが、それでもUIのみでもこのパフォーマンスはちょっと納得できなかった。そして色々と調べたら、デフォルトのグラフィックAPI、つまりVulkanはGoogle Pixel Tabletと相性が悪いと判明しました。
逆にOpenELGS3に切り替えたら、常時30fpsも問題ないという。
おそらくデバイスによります、なぜかというと、うちのXperia 5IIIではVulkanでも問題なかった。
なんだろうね……
そして、実は今日は丁度アセット暗号化に悩まされた。以前では一度試したが、暗号化したアセットバンドルをファイルとしてそのまま読み込んで復号化し、そしてバイト配列をアセットバンドルのLoadFromMemoryで読み込む、ということまではテストした。
ところが、Androidではダメだった。なぜかというと、Androidでは全てがAPKに梱包されて、暗号化したアセットバンドルのファイルIOはできないのだ。
もちろんそのファイルを何処かのサーバーを置けばダウンロードすればいい、というのもわかるが、そういうサーバーの話は今まで想定外です。つまり議論しないといけない話で、そこまで単純な話ではない…。
色々と悩んで、どうすればいいかと色々と探し回ると、TextAssetの存在に気づくことに。TextAssetではBytesを扱えるからです。
そう、暗号化したアセットバンドルのファイルそのままアクセスできないなら、所詮はバイト配列なので、それをTextAssetとして保存すれば、もう一重アセットバンドルをかけよう、という話。
アセットバンドルではLoadFromFileでアクセス可能です。だから、まずは暗号化したアセットバンドルのバイト配列を保存したTextAssetのアセットバンドルを読み込み、そこから復号化、さらにアセットバンドルを読み込む。
できあがった。
邪道かもね。