Search Unity

Unity ECS doesn't like code stripping?

Discussion in 'Entity Component System' started by sebas77, Aug 23, 2019.

  1. sebas77

    sebas77

    Joined:
    Nov 4, 2011
    Posts:
    1,643
    If I set the managed code stripping to low, I get this:

    MissingMethodException: Constructing GameObjectConversionMappingSystem failed because CreateSystem parameters did not match its constructor. [Job]ComponentSystem GameObjectConversionMappingSystem must be mentioned in a link.xml file, or annotated with a [Preserve] attribute to prevent its constructor from being stripped. See https://docs.unity3d.com/Manual/ManagedCodeStripping.html for more information.
    at Unity.Entities.World.CreateSystemInternal (System.Type type, System.Object[] constructorArguments) [0x00054] in <888a4f3a0a024fedbb2967b09543729f>:0
    at Unity.Entities.World.CreateSystem[T] (System.Object[] constructorArguments) [0x00006] in <888a4f3a0a024fedbb2967b09543729f>:0
    at Unity.Entities.GameObjectConversionUtility.CreateConversionWorld (Unity.Entities.GameObjectConversionSettings settings) [0x00016] in <47e72c9b0f4a46dea0fd3c9554de604d>:0
    at Unity.Entities.GameObjectConversionUtility.ConvertGameObjectHierarchy (UnityEngine.GameObject root, Unity.Entities.GameObjectConversionSettings settings) [0x0000b] in <47e72c9b0f4a46dea0fd3c9554de604d>:0
     
  2. tertle

    tertle

    Joined:
    Jan 25, 2011
    Posts:
    3,761
    Yes you need to use a link.xml to stop stripping in il2cpp.

    They have said that this will be fixed and not required in 19.3 at some point.
     
  3. Joachim_Ante

    Joachim_Ante

    Unity Technologies

    Joined:
    Mar 16, 2005
    Posts:
    5,203
    It is indeed completely fixed in 19.3
     
  4. Hertzole

    Hertzole

    Joined:
    Jul 27, 2013
    Posts:
    422
    Sorry to necromance but I encountered stripping issues using the latest version of entities in 2020.2 and having high stripping enabled.

    Here's the error I got.
    Code (CSharp):
    1. MissingMethodException: Default constructor not found for type Unity.Entities.ConvertToEntitySystem
    2.   at System.RuntimeType.CreateInstanceMono (System.Boolean nonPublic) [0x0007b] in <64d34d0f4cd84a0ab5bf1a18f8cdc62a>:0
    3.   at System.RuntimeType.CreateInstanceSlow (System.Boolean publicOnly, System.Boolean skipCheckThis, System.Boolean fillCache, System.Threading.StackCrawlMark& stackMark) [0x00009] in <64d34d0f4cd84a0ab5bf1a18f8cdc62a>:0
    4.   at System.RuntimeType.CreateInstanceDefaultCtor (System.Boolean publicOnly, System.Boolean skipCheckThis, System.Boolean fillCache, System.Threading.StackCrawlMark& stackMark) [0x00027] in <64d34d0f4cd84a0ab5bf1a18f8cdc62a>:0
    5.   at System.Activator.CreateInstance (System.Type type, System.Boolean nonPublic) [0x00020] in <64d34d0f4cd84a0ab5bf1a18f8cdc62a>:0
    6.   at System.Activator.CreateInstance (System.Type type) [0x00000] in <64d34d0f4cd84a0ab5bf1a18f8cdc62a>:0
    7.   at Unity.Entities.TypeManager.ConstructSystem (System.Type systemType) [0x00033] in game\Library\PackageCache\com.unity.entities@0.9.1-preview.15\Unity.Entities\Types\SystemTypeManager.cs:49
    8.   at Unity.Entities.World.AllocateSystemInternal (System.Type type) [0x00001] in game\Library\PackageCache\com.unity.entities@0.9.1-preview.15\Unity.Entities\World.cs:246
    9.   at Unity.Entities.World.CreateSystemInternal (System.Type type) [0x00001] in game\Library\PackageCache\com.unity.entities@0.9.1-preview.15\Unity.Entities\World.cs:233
    10.   at Unity.Entities.World.GetOrCreateSystem[T] () [0x00012] in game\Library\PackageCache\com.unity.entities@0.9.1-preview.15\Unity.Entities\World.cs:346
    11.   at Unity.Entities.ConvertToEntity.Awake () [0x0000e] in game\Library\PackageCache\com.unity.entities@0.9.1-preview.15\Unity.Entities.Hybrid\ConvertToEntity.cs:26

    Along with the error, I got a few warnings too.
    Code (CSharp):
    1. Missing default ctor on Unity.Entities.EndInitializationEntityCommandBufferSystem (or if you don't want this to be auto-creatable, tag it with [DisableAutoCreation])
    2. UnityEngine.StackTraceUtility:ExtractStackTrace () (at C:/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
    3. UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
    4. UnityEngine.Logger:Log (UnityEngine.LogType,object)
    5. UnityEngine.Debug:LogWarning (object)
    6. Unity.Debug:LogWarning (string) (at game/Library/PackageCache/com.unity.entities@0.9.1-preview.15/Unity.Entities/Stubs/Unity/Debug.cs:15)
    7. Unity.Entities.DefaultWorldInitialization:FilterSystemType (System.Type,Unity.Entities.WorldSystemFilterFlags,bool) (at game/Library/PackageCache/com.unity.entities@0.9.1-preview.15/Unity.Entities.Hybrid/Injection/DefaultWorldInitialization.cs:297)
    8. Unity.Entities.DefaultWorldInitialization:GetAllSystems (Unity.Entities.WorldSystemFilterFlags,bool) (at game/Library/PackageCache/com.unity.entities@0.9.1-preview.15/Unity.Entities.Hybrid/Injection/DefaultWorldInitialization.cs:255)
    9. Unity.Entities.DefaultWorldInitialization:Initialize (string,bool) (at game/Library/PackageCache/com.unity.entities@0.9.1-preview.15/Unity.Entities.Hybrid/Injection/DefaultWorldInitialization.cs:104)
    10. Unity.Entities.AutomaticWorldBootstrap:Initialize () (at game/Library/PackageCache/com.unity.entities@0.9.1-preview.15/Unity.Entities.Hybrid/Injection/AutomaticWorldBootstrap.cs:15)
    11.  
    This warning appears for EndInitializationEntityCommandBufferSystem, BeginSimulationEntityCommandBufferSystem, EndSimulationEntityCommandBufferSystem, LateSimulationSystemGroup, BeginPresentationEntityCommandBufferSystem, and ConvertToEntitySystem.

    EDIT: I can no longer replicate this issue, which is odd. A later build, with basically no changes, fixed the issue.
     
    Last edited: Apr 24, 2020
    nico-yeet-studios likes this.