VContainer+Obfuscator まとめ

Unity2020.3.5 VContainer1.8.0 Obfuscator3.8.2

Obfuscator | ユーティリティ ツール | Unity Asset Store
Use the Obfuscator from Beebyte on your next project. Find this utility tool & more on the Unity Asset Store.

AddressableでシーンロードしてそのタイミングでDIします

ADFフル活用してます

スポンサーリンク

クラッシュ対策

  • LifetimeScopeを継承したクラスに[Skip]をつける
  • クラス内クラスは使わない
  • デストラクタは使わない
  • オリジナルジェネリックの継承は死にやすい( Hogehoge : FugaFuga<Hello>
  • VContainerをSkip Namespacesに登録(そもそも自分の書いたコード以外は守る必要ない
  • MagicaCloth設定したprefabがエラーになってるなら直す(そもそもMagicaClothを守る必要はない
x00007FFFC9ABDF43 (GameAssembly) [C:\Program Files\Unity\Hub\Editor\2020.3.5f1\Editor\Data\il2cpp\libil2cpp\vm\Reflection.cpp:662] il2cpp::vm::Reflection::HasAttribute 
 0x00007FFFCA1C14F7 (GameAssembly) [D:\unity\034_hotel\hotel_project\Library\Il2cppBuildCache\Windows\x64\il2cppOutput\mscorlib10.cpp:33022] MonoCustomAttrs_IsDefined_m73373570DE523E9AA18D5EFFD242365C87F5D8CD 
 0x00007FFFCA57B3AB (GameAssembly) [D:\unity\034_hotel\hotel_project\Library\Il2cppBuildCache\Windows\x64\il2cppOutput\VContainer.cpp:23075] TypeAnalyzer_Analyze_mAAAF83842B8C623E03128F6A639558D56997CE23 
 0x00007FFFCA7EE042 (GameAssembly) [D:\unity\034_hotel\hotel_project\Library\Il2cppBuildCache\Windows\x64\il2cppOutput\Generics8.cpp:60171] CreateValueCallback_Invoke_m8F9CDF06C2C0B6B3AAEDB925A983CE4B29B42883_gshared 
 0x00007FFFCA7E2029 (GameAssembly) [D:\unity\034_hotel\hotel_project\Library\Il2cppBuildCache\Windows\x64\il2cppOutput\Generics8.cpp:55127] ConcurrentDictionary_2_GetOrAdd_m5FC29BA5754171259F8C3EC34320534B79CE5B03_gshared 
 0x00007FFFCA57C4A9 (GameAssembly) [D:\unity\034_hotel\hotel_project\Library\Il2cppBuildCache\Windows\x64\il2cppOutput\VContainer.cpp:24416] U3CU3Ec__DisplayClass1_0_U3CGetOrBuildU3Eb__0_m44A8B20A9465107ECA81B7ACF79E6134993A3B33 
 0x00007FFFCA7EDEA4 (GameAssembly) [D:\unity\034_hotel\hotel_project\Library\Il2cppBuildCache\Windows\x64\il2cppOutput\Generics8.cpp:60171] CreateValueCallback_Invoke_m8F9CDF06C2C0B6B3AAEDB925A983CE4B29B42883_gshared 
 0x00007FFFCA7E2029 (GameAssembly) [D:\unity\034_hotel\hotel_project\Library\Il2cppBuildCache\Windows\x64\il2cppOutput\Generics8.cpp:55127] ConcurrentDictionary_2_GetOrAdd_m5FC29BA5754171259F8C3EC34320534B79CE5B03_gshared 
 0x00007FFFCA579505 (GameAssembly) [D:\unity\034_hotel\hotel_project\Library\Il2cppBuildCache\Windows\x64\il2cppOutput\VContainer.cpp:21105] RegistrationBuilder_Build_m7D09C460E938560621EF2ECEFF18A2A2E972743C 
 0x00007FFFCA56EEE4 (GameAssembly) [D:\unity\034_hotel\hotel_project\Library\Il2cppBuildCache\Windows\x64\il2cppOutput\VContainer.cpp:11447] ContainerBuilder_BuildRegistrations_m76CF2F23CD7B6EE1D05B04BE327526B38229F093 
 0x00007FFFCA579D05 (GameAssembly) [D:\unity\034_hotel\hotel_project\Library\Il2cppBuildCache\Windows\x64\il2cppOutput\VContainer.cpp:22261] ScopedContainerBuilder_BuildScope_m5D43E28105DE794957B8BE7B3D6D00D753F1DE3F 
 0x00007FFFCA5729EF (GameAssembly) [D:\unity\034_hotel\hotel_project\Library\Il2cppBuildCache\Windows\x64\il2cppOutput\VContainer.cpp:16005] LifetimeScope_Build_m00B659860F4421C9BE9751643BEE1F7F7676C9B8 
 0x00007FFFCA57277B (GameAssembly) [D:\unity\034_hotel\hotel_project\Library\Il2cppBuildCache\Windows\x64\il2cppOutput\VContainer.cpp:15788] LifetimeScope_Awake_mA7C663E7E5E8DA1436A2237B15F86CF04E18D156 
 0x00007FFFC9B170AC (GameAssembly) [D:\unity\034_hotel\hotel_project\Library\Il2cppBuildCache\Windows\x64\il2cppOutput\Il2CppInvokerTable.cpp:148678] RuntimeInvoker_TrueVoid_t700C6383A2A510C2CF4DD86DABD5CA9FF70ADAC5 
 0x00007FFFC9AC1ED0 (GameAssembly) [C:\Program Files\Unity\Hub\Editor\2020.3.5f1\Editor\Data\il2cpp\libil2cpp\vm\Runtime.cpp:568] il2cpp::vm::Runtime::Invoke

クラッシュするとこんな感じのエラー、意味は分かりません…

ビルド時間増大

1回目 2回目 
難読化なし2:301:30
難読化あり3:002:59
(2:30=2分30秒

unity 2020はコードに変更が無い場合はキャッシュしたものを使うので高速にビルドできます

ところが難読化すると毎回変更ありとみなされるのか高速化されません…

小さいテストコードでもだいぶ影響あります。製品コードだとかなりつらいかもです