Native container component support
When writing game and engine code, we often find that we need to maintain and update a single long-lived datastructure, which may potentially be used by multiple systems. We've found it convenient
in engine code to put such containers on Singleton components.
When a Native container is on a component, we enforce some restrictions on that component to ensure safety. In particular, we do not allow scheduling jobs against those components with IJobChunk or IJobEntity. This is because those jobs already access those components via containers, and the job safety system doesn't scan for nested containers, because that would make jobs take too long to schedule.
However, we do allow scheduling jobs against the containers themselves, so we get the component on the main thread, extract the container, and schedule the job against the container itself. The Singleton functions
are specifically designed for this case and avoid completing unnecessary dependencies for this reason, so that you can chain jobs across multiple systems against the same container in a singleton component without
creating a sync point.
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.