DOTS_Pong icon indicating copy to clipboard operation
DOTS_Pong copied to clipboard

ArgumentNullException & NullReferenceException in GameManager.cs

Open Brainversation opened this issue 4 years ago • 1 comments

Hello,

First of all thank you for this project and the video, very helpful for getting into DOTS.

Just a heads up, I am using different versions on Unity (2019.3.2f1) and the other packages (attached image) needed for this project.

Now for the issue:

In GameManager when I call GameObjectConversionSettings settings = GameObjectConversionSettings.FromWorld( World.DefaultGameObjectInjectionWorld, null ); ballEntityPrefab = GameObjectConversionUtility.ConvertGameObjectHierarchy( ballPrefab, settings ); I get multiple errors on the second line. It seems it has to do with leaving the second argument in the FromWorld function null.

I have attached an image and text of the errors below.

Thanks in advance!

image

image

image

ArgumentNullException: A valid BlobAssetStore must be passed to construct a BlobAssetComputationContext Parameter name: blobAssetStore Unity.Entities.BlobAssetComputationContext`2[TS,TB]..ctor (Unity.Entities.BlobAssetStore blobAssetStore, System.Int32 initialCapacity, Unity.Collections.Allocator allocator) (at Library/PackageCache/[email protected]/Unity.Entities.Hybrid/GameObjectConversion/BlobAssetComputationContext.cs:32) Unity.Physics.Authoring.BeginColliderConversionSystem.OnUpdate () (at Library/PackageCache/[email protected]/Unity.Physics.Hybrid/Conversion/BeginColliderConversionSystem.cs:20) Unity.Entities.ComponentSystem.Update () (at Library/PackageCache/[email protected]/Unity.Entities/ComponentSystem.cs:108) Unity.Entities.ComponentSystemGroup.UpdateAllSystems () (at Library/PackageCache/[email protected]/Unity.Entities/ComponentSystemGroup.cs:134) UnityEngine.DebugLogHandler:LogException(Exception, Object) Unity.Entities.Conversion.JournalingUnityLogger:LogException(Exception, Object) (at Library/PackageCache/[email protected]/Unity.Entities.Hybrid/GameObjectConversion/JournalingUnityLogger.cs:50) UnityEngine.Debug:LogException(Exception) Unity.Debug:LogException(Exception) (at Library/PackageCache/[email protected]/Unity.Entities/Stubs/Unity/Debug.cs:19) Unity.Entities.ComponentSystemGroup:UpdateAllSystems() (at Library/PackageCache/[email protected]/Unity.Entities/ComponentSystemGroup.cs:138) Unity.Entities.ComponentSystemGroup:OnUpdate() (at Library/PackageCache/[email protected]/Unity.Entities/ComponentSystemGroup.cs:114) Unity.Entities.ComponentSystem:Update() (at Library/PackageCache/[email protected]/Unity.Entities/ComponentSystem.cs:108) Unity.Entities.GameObjectConversionUtility:Convert(World) (at Library/PackageCache/[email protected]/Unity.Entities.Hybrid/GameObjectConversion/GameObjectConversionUtility.cs:146) Unity.Entities.GameObjectConversionUtility:ConvertGameObjectHierarchy(GameObject, GameObjectConversionSettings) (at Library/PackageCache/[email protected]/Unity.Entities.Hybrid/GameObjectConversion/GameObjectConversionUtility.cs:233) GameManager:Awake() (at Assets/Scripts/GameManager.cs:41)

NullReferenceException: Object reference not set to an instance of an object Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle.CheckReadAndThrow (Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle handle) (at <94c5f4c38cdc42d2b006f8badef04394>:0) Unity.Collections.NativeHashMap2[TKey,TValue].ContainsKey (TKey key) (at Library/PackageCache/[email protected]/Unity.Collections/NativeHashMap.cs:242) Unity.Entities.BlobAssetComputationContext2[TS,TB].NeedToComputeBlobAsset (Unity.Entities.Hash128 hash) (at Library/PackageCache/[email protected]/Unity.Entities.Hybrid/GameObjectConversion/BlobAssetComputationContext.cs:97) Unity.Physics.Authoring.BaseShapeConversionSystem1[T].GetInputDataFromAuthoringComponent (T shape) (at Library/PackageCache/[email protected]/Unity.Physics.Hybrid/Conversion/BaseShapeConversionSystem.cs:58) Unity.Physics.Authoring.BaseShapeConversionSystem1[T].OnUpdate () (at Library/PackageCache/[email protected]/Unity.Physics.Hybrid/Conversion/BaseShapeConversionSystem.cs:146) Unity.Entities.ComponentSystem.Update () (at Library/PackageCache/[email protected]/Unity.Entities/ComponentSystem.cs:108) Unity.Entities.ComponentSystemGroup.UpdateAllSystems () (at Library/PackageCache/[email protected]/Unity.Entities/ComponentSystemGroup.cs:134) UnityEngine.DebugLogHandler:LogException(Exception, Object) Unity.Entities.Conversion.JournalingUnityLogger:LogException(Exception, Object) (at Library/PackageCache/[email protected]/Unity.Entities.Hybrid/GameObjectConversion/JournalingUnityLogger.cs:50) UnityEngine.Debug:LogException(Exception) Unity.Debug:LogException(Exception) (at Library/PackageCache/[email protected]/Unity.Entities/Stubs/Unity/Debug.cs:19) Unity.Entities.ComponentSystemGroup:UpdateAllSystems() (at Library/PackageCache/[email protected]/Unity.Entities/ComponentSystemGroup.cs:138) Unity.Entities.ComponentSystemGroup:OnUpdate() (at Library/PackageCache/[email protected]/Unity.Entities/ComponentSystemGroup.cs:114) Unity.Entities.ComponentSystem:Update() (at Library/PackageCache/[email protected]/Unity.Entities/ComponentSystem.cs:108) Unity.Entities.GameObjectConversionUtility:Convert(World) (at Library/PackageCache/[email protected]/Unity.Entities.Hybrid/GameObjectConversion/GameObjectConversionUtility.cs:146) Unity.Entities.GameObjectConversionUtility:ConvertGameObjectHierarchy(GameObject, GameObjectConversionSettings) (at Library/PackageCache/[email protected]/Unity.Entities.Hybrid/GameObjectConversion/GameObjectConversionUtility.cs:233) GameManager:Awake() (at Assets/Scripts/GameManager.cs:41)

Brainversation avatar Mar 20 '20 02:03 Brainversation

For 2021 users... Instead of passing null: GameObjectConversionSettings settings = GameObjectConversionSettings.FromWorld( World.DefaultGameObjectInjectionWorld, null ); You need to pass a new BlobAssetStore() instead.

However, since the blob needs to be disposed, you should cache it in Awake(), then call blob.Dispose() in OnDestroy()

celojevic avatar Aug 26 '21 15:08 celojevic