LoginSignup
3
1

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-09-23

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で調べるとインスタンス複数生成してもアニメーションは共通化されているような挙動が見受けられました。多分。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1