Unityのバージョン:2018.3.5f1
アクションやRPGゲームでよく、敵からダメージを受けたときに頭上からダメージ数字がポーンと飛び出る演出がありますよね。
あれを作ろうとしたんですけど、どう作るか悩んで手が止まりました。
というのも、最近こういう記事を見たからです。
uGUI(Image)とSpriteRendererの静止時と動作時の負荷比較【Unity】【uGUI】【最適化】
uGUIを1つでも動かすと負荷が上昇するらしいです。
では、Canvas上の全てのTextが動く場合は、1つにまとめたほうがいいのか個別にしたほうがいいのか。
個別に動かす場合、Textを動かす場合とCanvasを動かす場合で負荷は変わるのか。
分からないので実際動かしてみました。
今回、以下の4つのパターンをそれぞれ100個、500個、1000個同時に表示してアニメーションさせた場合の平均FPSを比較しました。
Scene上の「WorldCanvas」の下に「Text1」オブジェクトを生成します。
Animatorで「Text1」をアニメーションさせます。
Scene上に「Text2」オブジェクトを生成します。
Animatorで「Text2/Canvas/Text」をアニメーションさせます。
Scene上に「Text3」オブジェクトを生成します。
Animatorで「Text3/Canvas」をアニメーションさせます。
Scene上に「Text4」オブジェクトを生成します。
Animatorで「Text4」をアニメーションさせます。
また、共通条件は以下の通りです。
Canvas1つ+Text移動 | Canvas個別+Text移動 | Canvas個別+Canvas移動 | Canvas個別+オブジェクト移動 | |
---|---|---|---|---|
100 | 60.4 | 60.4 | 60.3 | 60.4 |
500 | 60.4 | 43.3 | 59.1 | 59.4 |
1000 | 49.7 | 32.7 | 30.3 | 32.5 |
結果を見る限り、1つのCanvasに全てのTextを表示するのが1番早かったです。
ただ、500個動かしたときと1000個動かしたときの結果について、2番以下の結果が異なっているのが少し気になります。
とりあえず、最初に参照した記事と合わせると、動くものは動くもの、動かないものは動かないもので1つにまとめるのが良いということでしょうかね。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント