Help us understand the problem. What is going on with this article?

[UE4]UMGでUserWidgetを並べた時とBPで動的追加した時の検証。とWidgetAnimationのロード検証

UE4を用いたTPS制作事例 ~Earth Defense Force:Iron Rainの場合~

のロード時間周りの話でありました、UMGでUserWidgetを子ウィジェットに登録するより、BPから追加した方がロード時間速くなった的な話がありました。
(ココ資料アップロード待ち)

軽く検証してみました。
ガワだけなので内部処理まで追っていないです。間違ってたらごめんなさい。
UE4.22.3で検証

検証データ

2019-09-23_22h43_49.png
こんな1行のWidgetを
2019-09-23_22h45_05.png
こんな感じで13行*2列、並べるウィジェットです。オプション画面とか。

パターン1

2019-09-23_22h51_50.png
UMGに全部突っ込んだデータです

パターン2

2019-09-23_22h59_37.png
2019-09-23_23h00_02.png
UMG自体には追加せず、BPからWidget作って追加

検証方法

2019-09-23_23h26_28.png
UMGを動的にロードして適用します

後はパッケージングして、いつものobj listでUObject数を調べました
[UE4]GarbageCollectの対象周りを調べてみた
2019-09-23_23h45_20.png

結果

Object総数 1行Widget数
生成前 36004 0
パターン1:UMG入れ 37048 79
パターン2:BP追加 36574 27

表示される13*2個とロードした1個を含めて27個。
UMGに全突っ込みしたパターン1はWidget数が3倍に。
パターン1の方はCDOとかアセットのロード自体に1行Widgetが乗ってしまう分で増えてる感じでしょうか?

GC的にはClusterされていると大きな影響はなさそう?
ロード時間的には余分な生成物があるので無駄は有りそう。
(PCだとこの規模ではほぼ差が出ないので検証結果は無し)

追検証

アニメーションのロードについて

UMGに入れるとWidgetのアニメーションがその分ロードされる、的な話があったような記憶があります。
簡素ですが調べました。
"TestAnimation"という名前のアニメーションを1つだけ入ったウィジェット(UMG_Item)を3つほど突っ込んだUMGをロードしてみました
2019-09-24_03h06_42.png

UE4.19: Widgetに突っ込んだ

Obj List: Class=WidgetAnimation
Objects:
                                                                                                                                  Object      NumKB      MaxKB   ResExcKB  ResExcDedSysKB  ResExcShrSysKB  ResExcDedVidKB  ResExcShrVidKB     ResExcUnkKB
                                               WidgetAnimation /Game/419/UMG_All.WidgetArchetype:WidgetTree_0.UMG_Item.WidgetAnimation_0       1.14       1.16       0.00            0.00            0.00            0.00            0.00            0.00
                                                                   WidgetAnimation /Game/419/UMG_Item.WidgetArchetype:TestAnimation_INST       1.14       1.16       0.00            0.00            0.00            0.00            0.00            0.00
                                                      WidgetAnimation /Game/419/UMG_All.UMG_All_C:WidgetTree.UMG_Item.TestAnimation_INST       1.14       1.16       0.00            0.00            0.00            0.00            0.00            0.00
                                                    WidgetAnimation /Game/419/UMG_All.UMG_All_C:WidgetTree.UMG_Item_0.TestAnimation_INST       1.14       1.16       0.00            0.00            0.00            0.00            0.00            0.00
                                                    WidgetAnimation /Game/419/UMG_All.UMG_All_C:WidgetTree.UMG_Item_1.TestAnimation_INST       1.14       1.16       0.00            0.00            0.00            0.00            0.00            0.00
                                                                        WidgetAnimation /Game/419/UMG_Item.UMG_Item_C:TestAnimation_INST       1.14       1.16       0.00            0.00            0.00            0.00            0.00            0.00
                                             WidgetAnimation /Game/419/UMG_All.WidgetArchetype:WidgetTree_0.UMG_Item_0.WidgetAnimation_1       1.14       1.16       0.00            0.00            0.00            0.00            0.00            0.00
                                             WidgetAnimation /Game/419/UMG_All.WidgetArchetype:WidgetTree_0.UMG_Item_1.WidgetAnimation_2       1.14       1.16       0.00            0.00            0.00            0.00            0.00            0.00
                       WidgetAnimation /Engine/Transient.GameEngine_0:GameInstance_0.UMG_All_C_0.WidgetTree_0.UMG_Item.WidgetAnimation_0       1.14       1.16       0.00            0.00            0.00            0.00            0.00            0.00
                     WidgetAnimation /Engine/Transient.GameEngine_0:GameInstance_0.UMG_All_C_0.WidgetTree_0.UMG_Item_0.WidgetAnimation_1       1.14       1.16       0.00            0.00            0.00            0.00            0.00            0.00
                     WidgetAnimation /Engine/Transient.GameEngine_0:GameInstance_0.UMG_All_C_0.WidgetTree_0.UMG_Item_1.WidgetAnimation_2       1.14       1.16       0.00            0.00            0.00            0.00            0.00            0.00

                                                                                            Class    Count      NumKB      MaxKB   ResExcKB  ResExcDedSysKB  ResExcShrSysKB  ResExcDedVidKB  ResExcShrVidKB     ResExcUnkKB
                                                                                  WidgetAnimation       11      12.59      12.72       0.00            0.00            0.00            0.00            0.00            0.00

11 Objects (Total: 0.012M / Max: 0.012M / Res: 0.000M | ResDedSys: 0.000M / ResShrSys: 0.000M / ResDedVid: 0.000M / ResShrVid: 0.000M / ResUnknown: 0.000M)

UE4.19: BPから追加した

Obj List: Class=WidgetAnimation
Objects:
                                                                                                                                  Object      NumKB      MaxKB   ResExcKB  ResExcDedSysKB  ResExcShrSysKB  ResExcDedVidKB  ResExcShrVidKB     ResExcUnkKB
                                                                   WidgetAnimation /Game/419/UMG_Item.WidgetArchetype:TestAnimation_INST       1.14       1.16       0.00            0.00            0.00            0.00            0.00            0.00
                                           WidgetAnimation /Engine/Transient.GameEngine_0:GameInstance_0.UMG_Item_C_0.TestAnimation_INST       1.14       1.16       0.00            0.00            0.00            0.00            0.00            0.00
                                           WidgetAnimation /Engine/Transient.GameEngine_0:GameInstance_0.UMG_Item_C_1.TestAnimation_INST       1.14       1.16       0.00            0.00            0.00            0.00            0.00            0.00
                                           WidgetAnimation /Engine/Transient.GameEngine_0:GameInstance_0.UMG_Item_C_2.TestAnimation_INST       1.14       1.16       0.00            0.00            0.00            0.00            0.00            0.00
                                                                        WidgetAnimation /Game/419/UMG_Item.UMG_Item_C:TestAnimation_INST       1.14       1.16       0.00            0.00            0.00            0.00            0.00            0.00

                                                                                            Class    Count      NumKB      MaxKB   ResExcKB  ResExcDedSysKB  ResExcShrSysKB  ResExcDedVidKB  ResExcShrVidKB     ResExcUnkKB
                                                                                  WidgetAnimation        5       5.72       5.78       0.00            0.00            0.00            0.00            0.00            0.00

5 Objects (Total: 0.006M / Max: 0.006M / Res: 0.000M | ResDedSys: 0.000M / ResShrSys: 0.000M / ResDedVid: 0.000M / ResShrVid: 0.000M / ResUnknown: 0.000M)

UE4.22: Widgetに突っ込んだ

Obj List: Class=WidgetAnimation
Objects:
                                                                                                                                  Object      NumKB      MaxKB   ResExcKB  ResExcDedSysKB  ResExcShrSysKB  ResExcDedVidKB  ResExcShrVidKB     ResExcUnkKB
                                                                        WidgetAnimation /Game/419/UMG_Item.UMG_Item_C:TestAnimation_INST       1.04       1.05       0.00            0.00            0.00            0.00            0.00            0.00

                                                                                            Class    Count      NumKB      MaxKB   ResExcKB  ResExcDedSysKB  ResExcShrSysKB  ResExcDedVidKB  ResExcShrVidKB     ResExcUnkKB
                                                                                  WidgetAnimation        1       1.04       1.05       0.00            0.00            0.00            0.00            0.00            0.00

1 Objects (Total: 0.001M / Max: 0.001M / Res: 0.000M | ResDedSys: 0.000M / ResShrSys: 0.000M / ResDedVid: 0.000M / ResShrVid: 0.000M / ResUnknown: 0.000M)

突っ込んだ方は親UserWidget内に含まれる子UserWidgetのアニメーションまで引っ付いてる感じでしょうか。
BPから追加した方はインスタンス毎のみのアニメーション数になっているようです。

ただ、UE4.22で調べるとインスタンス複数生成してもアニメーションは共通化されているような挙動が見受けられました。多分。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away