概要 †
オリジナルバージョンのエンジンで保存されたアセットと、カスタマイズしたエンジンとで保存データに差分が有る場合。
保存バイト数が合わなくてロード時にエラーが発生する
実装 †
とりあえずこの方法でオリジナルのアセットの読み込み、カスタマイズしたエンジンのアセット保存は出来ることを確認
正しいかは不明
- バージョンNoを追加する
- Runtime\Core\Public\UObject\ObjectVersion.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
!
| #spanend
#spanadd
enum EUnrealEngineObjectLicenseeUE4Version
#spanend
#spanadd
{
#spanend
#spanadd
VER_LIC_NONE = 0,
#spanend
#spanadd
#spanend
#spanadd
VER_LIC_COM04_VER01,
#spanend
#spanadd
#spanend
#spanadd
#spanend
#spanadd
#spanend
#spanadd
VER_LIC_AUTOMATIC_VERSION_PLUS_ONE,
#spanend
#spanadd
VER_LIC_AUTOMATIC_VERSION = VER_LIC_AUTOMATIC_VERSION_PLUS_ONE - 1
#spanend
#spanadd
};
#spanend
#spanadd
|
- アセットのSeriarize処理に追加
- 例)Runtime\Engine\Private\Materials\MaterialInstance.cpp
- void UMaterialInstance::Serialize(FArchive& Ar)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
-
|
|
|
|
|
|
|
|
-
|
|
|
|
|
|
|
|
!
|
|
!
-
|
|
|
|
|
|
|
|
!
| #spanend
#spanadd
#spanend
#spanadd
if( Ar.UE4Ver() < VER_UE4_STATIC_SHADOW_DEPTH_MAPS )
#spanend
#spanadd
{
#spanend
#spanadd
#spanend
#spanadd
switch( BasePropertyOverrides.ShadingModel )
#spanend
#spanadd
{
#spanend
#spanadd
case MSM_Unlit: BasePropertyOverrides.ShadingModel = MSM_DefaultLit; break;
#spanend
#spanadd
case MSM_DefaultLit: BasePropertyOverrides.ShadingModel = MSM_Unlit; break;
#spanend
#spanadd
}
#spanend
#spanadd
}
#spanend
#spanadd
#spanend
#spanadd
if( Ar.LicenseeUE4Ver() >= VER_LIC_COM04_VER01) {
#spanend
#spanadd
#spanend
#spanadd
Ar << BasePropertyOverrides.bOverride_TranslucencyLightingMode << BasePropertyOverrides.TranslucencyLightingMode;
#spanend
#spanadd
}
#spanend
#spanadd
#spanend
#spanadd
|