Top > エンジン改造-アセットのエンジンバージョン管理

概要

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

実装

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

  1. バージョン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,
       
      // start -------
          VER_LIC_COM04_VER01,
      // end ---------
       
          // - this needs to be the last line (see note below)
          VER_LIC_AUTOMATIC_VERSION_PLUS_ONE,
          VER_LIC_AUTOMATIC_VERSION = VER_LIC_AUTOMATIC_VERSION_PLUS_ONE - 1
      };
  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
        
         
         
        -
        |
        |
        -
        |
        |
        !
        !
         
        -
        |
        |
        !
         
        
                            // unrelated but closest change to bug
                            if( Ar.UE4Ver() < VER_UE4_STATIC_SHADOW_DEPTH_MAPS )
                            {
                                // switched enum order
                                switch( BasePropertyOverrides.ShadingModel )
                                {
                                    case MSM_Unlit:            BasePropertyOverrides.ShadingModel = MSM_DefaultLit; break;
                                    case MSM_DefaultLit:    BasePropertyOverrides.ShadingModel = MSM_Unlit; break;
                                }
                            }
        // start -------
                            if( Ar.LicenseeUE4Ver() >= VER_LIC_COM04_VER01) {
            // エンジンの改造で追加した保存したいデータ
                                Ar << BasePropertyOverrides.bOverride_TranslucencyLightingMode << BasePropertyOverrides.TranslucencyLightingMode;
                            }
        // end ---------
        

リロード   新規 編集 凍結 差分 添付 複製 名前変更   ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: 2017-05-03 (水) 15:50:35 (1159d)