Bird
Raised Fist0
Unityframework~10 mins

Platform-specific settings in Unity - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Platform-specific settings
Start: Unity Project
↓
Open Build Settings
↓
Select Platform
↓
Adjust Platform-specific Settings
↓
Apply & Build
↓
Test on Target Platform
↓
End
This flow shows how you pick a platform in Unity, change its settings, then build and test your game for that platform.
Execution Sample
Unity
using UnityEngine;

public class PlatformCheck : MonoBehaviour
{
    void Start()
    {
#if UNITY_IOS
        Debug.Log("Running on iOS");
#elif UNITY_ANDROID
        Debug.Log("Running on Android");
#else
        Debug.Log("Running on another platform");
#endif
    }
}
This code prints a message depending on which platform the game is running on.
Execution Table
StepPlatform SymbolCondition CheckedResultOutput
1UNITY_IOSIs UNITY_IOS defined?No
2UNITY_ANDROIDIs UNITY_ANDROID defined?YesRunning on Android
3ElseNo other platform matchedSkipped
💡 UNITY_ANDROID symbol is defined, so that block runs and others are skipped.
Variable Tracker
VariableStartAfter Step 1After Step 2Final
Output message"""""Running on Android""Running on Android"
Key Moments - 2 Insights
Why does only one Debug.Log run even though there are multiple platform checks?
Because the #if/#elif/#else directives stop checking after the first true condition, as shown in execution_table step 2 where UNITY_ANDROID is true and others are skipped.
What happens if no platform symbol matches?
The #else block runs, printing the default message. This is shown in execution_table step 3 which is skipped here but would run if no symbols matched.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what output is printed at step 2?
ARunning on iOS
BRunning on Android
CRunning on another platform
DNo output
💡 Hint
Check the Output column at step 2 in the execution_table.
At which step does the condition become true and stop further checks?
AStep 2
BStep 3
CStep 1
DNo step
💡 Hint
Look at the Condition Checked and Result columns in execution_table.
If UNITY_IOS was defined instead of UNITY_ANDROID, what would be the output?
ARunning on another platform
BRunning on Android
CRunning on iOS
DNo output
💡 Hint
Refer to the execution_table logic for UNITY_IOS and UNITY_ANDROID conditions.
Concept Snapshot
Platform-specific settings in Unity let you customize builds for iOS, Android, etc.
Use #if UNITY_IOS, #elif UNITY_ANDROID to run code only on certain platforms.
Adjust settings in Build Settings for each platform.
Build and test on the target device to verify.
This helps make your game work well everywhere.
Full Transcript
Platform-specific settings in Unity allow you to customize your game for different devices like iOS or Android. You open Build Settings, pick a platform, change its settings, then build and test. In code, you use #if UNITY_IOS or #elif UNITY_ANDROID to run platform-specific code. Only the first matching condition runs, so only one message prints. If no platform matches, the #else block runs. This helps your game behave correctly on each device.

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