Quick answer: Unity Job System refusing to schedule with “write access conflict”? Two jobs both writing the same NativeArray run concurrently — safety system blocks the schedule.

Two damage-apply jobs write to the same Health array. Both schedule simultaneously; the second throws.

Chain via JobHandle

var first = job1.Schedule(count, 64);
var second = job2.Schedule(count, 64, first);

The dependency makes job2 wait for job1. Safety system allows the write because they don’t overlap in time.

Separate Output Buffers

If parallelism is needed, have each job write to its own output. Combine in a third merge job.

NativeDisableParallelForRestriction

For known-safe parallel writes (each thread writes its own index), use [NativeDisableParallelForRestriction]. Tells the safety system you’ve hand-verified.

Read-Only Access

[ReadOnly] on a NativeArray field lets multiple jobs read concurrently. Mark inputs explicitly.

Verifying

Jobs schedule and complete without conflicts. Burst inspector confirms each job is compiled and runs as expected.

“Concurrent writes block at schedule. Chain via JobHandle or split outputs.”

Annotate fields with [ReadOnly] / [WriteOnly] from the start — the safety system catches bugs that would otherwise corrupt memory.