概要

オリジナルバージョンのエンジンで保存されたアセットと、カスタマイズしたエンジンとで保存データに差分が有る場合。
保存バイト数が合わなくてロード時にエラーが発生する

実装


とりあえずこの方法でオリジナルのアセットの読み込み、カスタマイズしたエンジンのアセット保存は出来ることを確認

正しいかは不明
  1. バージョン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
      // start -------
      #spanend
      #spanadd
          VER_LIC_COM04_VER01,
      #spanend
      #spanadd
      // end ---------
      #spanend
      #spanadd
       
      #spanend
      #spanadd
          // - this needs to be the last line (see note below)
      #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
  2. アセットの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
                            // unrelated but closest change to bug
        #spanend
        #spanadd
                            if( Ar.UE4Ver() < VER_UE4_STATIC_SHADOW_DEPTH_MAPS )
        #spanend
        #spanadd
                            {
        #spanend
        #spanadd
                                // switched enum order
        #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
        // start -------
        #spanend
        #spanadd
                            if( Ar.LicenseeUE4Ver() >= VER_LIC_COM04_VER01) {
        #spanend
        #spanadd
            // エンジンの改造で追加した保存したいデータ
        #spanend
        #spanadd
                                Ar << BasePropertyOverrides.bOverride_TranslucencyLightingMode << BasePropertyOverrides.TranslucencyLightingMode;
        #spanend
        #spanadd
                            }
        #spanend
        #spanadd
        // end ---------
        #spanend
        #spanadd

    ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS