前提・実現したいこと
初めて利用させて頂きます。至らぬ点ございましたら申し訳ございません。
Unityを使用し、2Dのスマホゲームを製作しています。
PCでプレイする分にはロードが長いと感じる事はないのですが、スマホにてゲームをプレイしてみると、ロード時間が5秒以上かかってしまうシーンが2つ程ありました。
動きの少ない&ネット対戦などは無いゲームなので、ロード時間が長すぎる気がします。
Profilerにて実行に時間がかかっている箇所を調べたのですが、その処理を軽くする方法が解りません。
実現したい事は、この長すぎるロード時間が短縮できればと思い、質問させて頂きました。
発生している問題・エラーメッセージ
(1枚目)PCでのprofiler (2枚目)スマホでのprofiler - Timeline (3枚目)スマホでのprofiler - Hierarchy Profilerを使用し、CPU等の使用率・実行時間を調べました。 シーンロード時、スマホでの実行時間が異常に長い処理を見つけました。ロード体感時間ともほぼ一緒なので、恐らくこの処理が原因かと予想しています。 原因と思われる処理は自作したメソッドではないので、Unity固有の処理かと思われます。 処理について調べResources.Load()を使わないような仕組みになどに変更などをしても改善が見られませんでした。 また、3枚目にあるApplication.WaitForAsyncOperationToCompleteについて、LoadSceneAsyncが原因かな?と思ったのですが、LoadSceneAsyncは現時点で使用はしていません。 上の画像にある処理について詳しい方がおられましたら、ご教授願いたいです。
試したこと
・SceneManager.LoadSceneAsync("シーン名") でシーンを非同期でロードしておき、短縮を図る
→こちらにあるようにLoadSceneAsyncの仕様で一度にロードしておけるシーンの数は1つまでなので効果小
・効果音など、取得するのに時間がかかりそうな所は初期ロード時にキャッシュするようにした
→効果なし
・BuildSettingのCompressionMethodにてアプリの圧縮を行った。
→効果なし
・Resources.Load()は重いらしいので使わず、アセットをインスペクターに直接アタッチするようにした
→効果なし
補足情報(FW/ツールのバージョンなど)
(Unityバージョン)Unity 2018.3.2f1 (64-bit)
(テスト機器)Huawei P30 lite
(PC)Windows10 Home 64bit / core i5 8250U / メモリ8GB
回答1件
あなたの回答
tips
プレビュー