概要 †
オリジナルバージョンのエンジンで保存されたアセットと、カスタマイズしたエンジンとで保存データに差分が有る場合。
保存バイト数が合わなくてロード時にエラーが発生する
実装 †
とりあえずこの方法でオリジナルのアセットの読み込み、カスタマイズしたエンジンのアセット保存は出来ることを確認
正しいかは不明
- バージョンNoを追加する
- Runtime\Core\Public\UObject\ObjectVersion.h
1
2
3
4
5
6
7
8
9
10
11
12
|
-
|
|
|
|
|
|
|
|
|
!
| enum EUnrealEngineObjectLicenseeUE4Version
{
VER_LIC_NONE = 0,
VER_LIC_COM04_VER01,
VER_LIC_AUTOMATIC_VERSION_PLUS_ONE,
VER_LIC_AUTOMATIC_VERSION = VER_LIC_AUTOMATIC_VERSION_PLUS_ONE - 1
};
|
- アセットの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
|
-
|
|
-
|
|
!
!
-
|
|
!
| if( Ar.UE4Ver() < VER_UE4_STATIC_SHADOW_DEPTH_MAPS )
{
switch( BasePropertyOverrides.ShadingModel )
{
case MSM_Unlit: BasePropertyOverrides.ShadingModel = MSM_DefaultLit; break;
case MSM_DefaultLit: BasePropertyOverrides.ShadingModel = MSM_Unlit; break;
}
}
if( Ar.LicenseeUE4Ver() >= VER_LIC_COM04_VER01) {
Ar << BasePropertyOverrides.bOverride_TranslucencyLightingMode << BasePropertyOverrides.TranslucencyLightingMode;
}
|