質問: Unityで48*48pxのスプライトをタイルとして敷き詰めて地面のマップとしています。 初期設定ではすべてのタイルはSetActive(false)していますが、 スクロールするとカメラの外側+3タイル分より内部はタイルが見えるようにSetActive(true)しています。 しかしながらSetActive(true)が負荷があるのか、スクロールがカクつくという影響を及ぼしています。 何かお知恵を拝借いただけないでしょうか。よろしくお願いいたします。 ◆環境 Unity2017 3.1f1 Windowx10
回答: 「質問への修正」を元にした回答です。 > > オブジェクトの量によってはどんなコードにしても発生し得ると思いますが、SetActiveをコメントアウトする等して、本当にSetActiveが原因か確認してください。 > > (個人的にはSetActiveもさることながら「SetActiveするオブジェクトの判別と取得」も怪しいと思います) > > > →「SetActiveするオブジェクトの判別と取得」が原因だったそうです。 Updateは毎フレーム実行されるので、重い処理をやると高負荷になります。 ですがスクロールに合わせるならUpdateでやらないといけないかもしれません。 その場合は「本当に毎フレーム実行が必要なのか?(数フレーム毎ではダメか?)」「処理内容の負荷を下げられないか?」「ジョブシステムではどうか?」などの対策が検討出来ます。 その他の確認点です。(同じ問題にぶつかっている人へ) * Unityのタイルマップ機能は使えないのか * タイルはそのサイズでないといけないのか(タイルサイズを大きくする=オブジェクト数が減る=処理の回数が減る=負荷削減) * スクリプトではなくUnityのオクルージョンカリング機能は使用出来ないのか * オブジェクトはオンのままではいけないのか(本当にSetActiveしなくてはならないのか) * オンのまま動作させて重いならばその本当の原因はどこなのか(本当にSetActiveで解決するのか)