If a GameObject does not move at runtime, it is known as a static GameObject. If a GameObject moves at runtime, it is known as a dynamic GameObject.
Many systems in Unity can precompute information about static GameObjects in the Editor. Because the GameObjects do not move, the results of these calculations are still valid at runtime. This means that Unity can save on runtime calculations, and potentially improve performance.
The Static Editor Flags property lists a number of Unity systems which can include a static GameObject in their precomputations. Use the drop-down to define which systems should include the GameObject in their precomputations. Setting Static Editor Flags at runtime has no effect on these systems.
You should only include a GameObject in the precomputations for systems that need to know about that GameObject. Including a GameObject in the precomputations for a system that does not need to know about that GameObject can result in wasted calculations, unnecessarily large data files, or unexpected behavior.
The Static Editor Flags property is located in the Inspector for a GameObject, in the extreme top-right. It comprises a checkbox, which sets the value to Everything or Nothing, and a drop-down menu that lets you choose which values to include.
You can also set the Static Editor Flags property in code, using the GameObjectUtility.SetStaticEditorFlags API, and the GameObject.isStatic.
The following values are available:
Property: | Function: |
---|---|
Nothing | Do not include the GameObject in precomputations for any systems. |
Everything | Include the GameObject in precomputations for all systems below. |
Contribute GI | Include the GameObject when precomputing lighting data. For more information on precomputed lighting, see the documentation on the Lighting system. |
Occluder Static | Mark the GameObject as a Static Occluder in the occlusion culling system. For more information, see the documentation on the Occlusion Culling system. |
Occludee Static | Mark the GameObject as a Static Occludee in the occlusion culling system. For more information, see the documentation on the Occlusion Culling system. |
Batching Static | Combine the GameObject’s Mesh with other eligible Meshes, to potentially reduce runtime rendering costs. For more information, see the documentation on Static Batching. |
Navigation Static | Include the GameObject when precomputing navigation data. For more information, see the documentation on the Navigation system. |
Off Mesh Link Generation | Attempt to generate an Off-Mesh Link that starts from this GameObject when precomputing navigation data. For more information, see the documentation on automatically building Off-Mesh Links. |
Reflection Probe | Include this GameObject when precomputing data for Reflection Probes whose Type property is set to Baked. For more information, see the documentation on Reflection Probes. |