I wanted to create a set of chunks in a grid along the X + Z axis in Unity (with the power of DOTS). To track which chunks I have already instantiated, I created a
chunkPositions. I set the size of this array to my world size (width by height) and I have a job that loops through all of the positions on the screen, checking which exist in
chunkPositions. If the position does not exist, I can create a new chunk there.
This one stuck me for a little while. The chunk at 0,0,0 would just not instantiate. After digging a little deeper, it seems that no matter what – 0,0,0 would always exist in the
You’re probably reading this and thinking – what a dummy. If you’re not though, the reason for this behavior – is when you pre-allocate memory to the
NativeArray<T>, it is automatically filled with zeroed out types (in my case, float3).
My solution to this is to instead start my terrain at
1f in the Y plane, so chunks would instead be at:
0f, 1f, 0f,
1f, 1f, 0f and so on. Simple! This also means that a value of
0f, 0f, 0f in the NativeArray can also be considered “not instantiated”.