Bird
Raised Fist0
Unityframework~8 mins

Platform-specific settings in Unity - Performance & Optimization

Choose your learning style10 modes available
Performance: Platform-specific settings
MEDIUM IMPACT
This affects how the game or app loads and runs on different devices, impacting load times and runtime efficiency.
Configuring graphics quality for different platforms
Unity
void Start() {
#if UNITY_IOS
  QualitySettings.SetQualityLevel(3); // Medium for iOS
#elif UNITY_ANDROID
  QualitySettings.SetQualityLevel(2); // Low for Android
#else
  QualitySettings.SetQualityLevel(5); // High for others
#endif
}
Sets quality based on platform capabilities, reducing load and runtime cost on weaker devices.
📈 Performance GainReduces load time by up to 3 seconds on mobile; smoother frame rates
Configuring graphics quality for different platforms
Unity
void Start() {
  QualitySettings.SetQualityLevel(5); // High quality for all platforms
}
Applying the highest quality settings on all platforms causes slow load times and poor performance on low-end devices.
📉 Performance CostIncreases load time by 2-3 seconds on low-end devices; causes frame drops during gameplay
Performance Comparison
PatternDOM OperationsReflowsPaint CostVerdict
High quality for all platformsN/AN/AHigh GPU load on weak devices[X] Bad
Platform-specific quality settingsN/AN/AOptimized GPU load per device[OK] Good
Rendering Pipeline
Platform-specific settings influence the initial loading and runtime rendering by adjusting quality and resource usage per device.
→Loading
→Runtime Rendering
→Memory Usage
⚠️ BottleneckLoading stage due to heavy assets or settings on low-end devices
Optimization Tips
1Use conditional compilation (#if UNITY_*) to apply platform-specific settings.
2Avoid high-quality settings on low-end devices to prevent slow load and frame drops.
3Test performance on each target platform using Unity Profiler.
Performance Quiz - 3 Questions
Test your performance knowledge
Why should you use platform-specific settings in Unity?
ATo optimize performance and load times for each device
BTo make the game look the same on all devices
CTo increase the app size for all platforms
DTo disable graphics on all platforms
DevTools: Profiler
How to check: Open Unity Profiler, run the game on target platform, and observe CPU/GPU usage and frame rate.
What to look for: Look for high spikes in CPU/GPU usage and low frame rates indicating performance issues.

Practice

(1/5)
1. What is the main purpose of using platform-specific settings in Unity?
easy
A. To disable all graphics features
B. To increase the game's file size
C. To make the game work well on different devices
D. To make the game run only on Windows

Solution

  1. Step 1: Understand platform-specific settings

    Platform-specific settings allow customizing game behavior for different devices.
  2. Step 2: Identify the main goal

    The goal is to ensure the game works well on all targeted platforms.
  3. Final Answer:

    To make the game work well on different devices -> Option C
  4. Quick Check:

    Platform-specific settings = device compatibility [OK]
Hint: Think about device compatibility and performance [OK]
Common Mistakes:
  • Confusing platform-specific settings with increasing file size
  • Assuming settings limit the game to one platform
  • Believing settings disable features globally
2. Which of the following is the correct way to write platform-specific code for Android in Unity?
easy
A. #if UNITY_ANDROID // Android code #endif
B. #if ANDROID // Android code #endif
C. #if PLATFORM_ANDROID // Android code #endif
D. #if UNITY_MOBILE // Android code #endif

Solution

  1. Step 1: Recall Unity platform symbols

    Unity uses symbols like UNITY_ANDROID for Android platform checks.
  2. Step 2: Match the correct syntax

    #if UNITY_ANDROID is the correct directive for Android-specific code.
  3. Final Answer:

    #if UNITY_ANDROID // Android code #endif -> Option A
  4. Quick Check:

    Use UNITY_ANDROID for Android platform [OK]
Hint: Use UNITY_ prefix for platform symbols [OK]
Common Mistakes:
  • Using incorrect symbols like ANDROID or PLATFORM_ANDROID
  • Assuming UNITY_MOBILE covers Android specifically
  • Missing #endif to close the directive
3. What will be the output when running this Unity C# code on iOS platform?
#if UNITY_IOS
Console.WriteLine("Running on iOS");
#else
Console.WriteLine("Running on other platform");
#endif
medium
A. Running on other platform
B. No output
C. Compilation error
D. Running on iOS

Solution

  1. Step 1: Check platform directive

    The code uses #if UNITY_IOS, which is true on iOS platform.
  2. Step 2: Determine executed code

    Since UNITY_IOS is defined, it prints "Running on iOS".
  3. Final Answer:

    Running on iOS -> Option D
  4. Quick Check:

    UNITY_IOS true prints iOS message [OK]
Hint: Match platform symbol with current device [OK]
Common Mistakes:
  • Confusing UNITY_IOS with UNITY_IPHONE
  • Expecting else block to run on iOS
  • Thinking code causes compilation error
4. Identify the error in this Unity C# code snippet for platform-specific compilation:
#if UNITY_STANDALONE
Debug.Log("Standalone platform");
#else
Debug.Log("Other platform");
medium
A. Missing #endif to close the #if directive
B. Wrong platform symbol UNITY_STANDALONE
C. Debug.Log cannot be used in platform directives
D. No error, code is correct

Solution

  1. Step 1: Check #if directive syntax

    The code starts with #if but does not have a matching #endif.
  2. Step 2: Understand preprocessor rules

    Every #if must be closed with #endif to avoid compilation errors.
  3. Final Answer:

    Missing #endif to close the #if directive -> Option A
  4. Quick Check:

    #if must end with #endif [OK]
Hint: Always close #if with #endif [OK]
Common Mistakes:
  • Assuming UNITY_STANDALONE is invalid
  • Thinking Debug.Log is disallowed inside #if
  • Ignoring missing #endif causes errors
5. You want to write code that runs only on Windows or macOS but not on mobile platforms. Which directive correctly achieves this in Unity?
hard
A. #if UNITY_STANDALONE // code #endif
B. #if UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX // code #endif
C. #if UNITY_ANDROID || UNITY_IOS // code #endif
D. #if UNITY_MOBILE // code #endif

Solution

  1. Step 1: Identify platforms to include

    Windows and macOS correspond to UNITY_STANDALONE_WIN and UNITY_STANDALONE_OSX.
  2. Step 2: Combine platform symbols correctly

    Use logical OR (||) to include both platforms in one directive.
  3. Final Answer:

    #if UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX // code #endif -> Option B
  4. Quick Check:

    Use || to combine Windows and macOS platforms [OK]
Hint: Use || to combine multiple platforms [OK]
Common Mistakes:
  • Using UNITY_STANDALONE alone includes all standalone platforms
  • Confusing mobile symbols with desktop platforms
  • Using && instead of || for platform combination
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard