Unityで48*48pxのスプライトをタイルとして敷き詰めて地面のマップとしています。
初期設定ではすべてのタイルはSetActive(false)していますが、
スクロールするとカメラの外側+3タイル分より内部はタイルが見えるようにSetActive(true)しています。
しかしながらSetActive(true)が負荷があるのか、スクロールがカクつくという影響を及ぼしています。
何かお知恵を拝借いただけないでしょうか。よろしくお願いいたします。
◆環境
Unity2017 3.1f1
Windowx10
オブジェクトの量によってはどんなコードにしても発生し得ると思いますが、SetActiveをコメントアウトする等して、本当にSetActiveが原因か確認してください。(個人的にはSetActiveもさることながら「SetActiveするオブジェクトの判別と取得」も怪しいと思います)
また、Unityのタイルマップ機能は使っているのか、タイルはそのサイズでないといけないのか、スクリプトではなくUnityのオクルージョンカリング機能は使用出来ないのかなど検討の余地は色々あります。「unity 軽量化」などで検索し、自分で試した内容を記載してください。
ありがうございます。参考にさせていただきます。「SetActiveするオブジェクトの判別と取得」が遅いのはご指摘の通りですが、SetActiveをコメントアウトすると早くなったのでここで質問させていただいた限りです。
何も書かれていないと「検証の結果SetActiveが原因と分かっている」のか「何も検証していないがSetActiveが原因ではないかと思っている」のか回答者には判断が付きません。二度手間を避ける為にも具体的な記載をお願いします。
また、SetActiveが遅いのなら「SetActiveしないようにする」が第一の対策案になります。オブジェクトはオンのままではいけないのか、オンのまま動作させて重いならばその本当の原因はどこなのか等、考える余地は色々あります。既に確認済みかもしれませんが「unity プロファイラ」で検索するとプロファイラを用いた確認方法が出ますので、そちらも参考にしてください。
お返事ありがとうございます。最初にご指摘いただいた通り、「SetActiveするオブジェクトの判別と取得」が問題でその処理がUpdate()を通るごとに呼ばれているのが原因だったようです。いろいろ教えてくださったのでベストアンサーにしたいのですが「回答」としていただけないでしょうか?
回答2件
あなたの回答
tips
プレビュー