Documentation

Unity Engine

Download Unity

Unity Engine

Configure managed code stripping

Configure managed code stripping in the Unity Editor and understand what Unity does at each stripping level.
Read time 2 minutesLast updated a day ago

The Managed Stripping Level property determines which rules the Unity linker follows when it analyzes and strips your application's code. Increasing the managed stripping level expands the scope of the linker's search for unused code but also increases build time.
To change the Managed Stripping Level property:
  1. Go to Edit >
    Project Settings

    ?

    > Player.
  2. In Other Settings, navigate to the Optimization heading.
  3. Set the Managed Stripping Level property to the desired value.

Property

Function

DisabledUnity doesn't remove any code.

This setting is only available for the CoreCLR scripting backend and is the default setting in that case.
MinimalUnity searches only the
UnityEngine
and the .NET class libraries for unused code. Unity doesn't remove any user-written code. This setting is the least likely to cause unexpected runtime behavior.

This setting is useful for projects where usability is of higher priority than build size. This is the default setting if you use the IL2CPP scripting backend.
MediumUnity partially searches all assemblies to find unused code. This setting applies a set of rules that strips more types of code patterns to reduce the build size. Although Unity doesn't strip all possible unused code, this setting does increase the risk of undesirable or unexpected behavior changes.
HighUnity performs an extensive search of all assemblies to find unused code. At this setting, Unity prioritizes size reduction more than code stability and removes as much code as possible.

This search can take much longer than for lower stripping levels. Use this setting only for projects where a compact build size is extremely important. Test your application thoroughly and make careful use of
[Preserve]
attributes and
link.xml
files to ensure that the Unity linker doesn't strip vital code.
Note
The Low managed stripping level is no longer supported. When you open a project that uses Low, Unity changes the setting to Minimal. Setting
ManagedStrippingLevel.Low
from a script throws a
NotSupportedException
.

Additional resources