unity-platforms-826ccc — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited unity-platforms-826ccc (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Unity 6 supports the following platform categories:
Build Profiles replace the old Build Settings window. A build profile is a set of configuration settings for building your application on a particular platform.
Scenes are managed per-profile. You can add, exclude, remove, and reorder scenes in your build. Each unique Scene file represents a unique level or screen.
Use #if directives to conditionally compile code per platform.
| Define | Platform |
|---|---|
UNITY_EDITOR | Any Editor code |
UNITY_EDITOR_WIN | Windows Editor |
UNITY_EDITOR_OSX | macOS Editor |
UNITY_EDITOR_LINUX | Linux Editor |
UNITY_STANDALONE_OSX | macOS Standalone |
UNITY_STANDALONE_WIN | Windows Standalone |
UNITY_STANDALONE_LINUX | Linux Standalone |
UNITY_STANDALONE | Any Standalone (Win/Mac/Linux) |
UNITY_SERVER | Dedicated Server |
UNITY_IOS | iOS |
UNITY_ANDROID | Android |
UNITY_TVOS | tvOS |
UNITY_VISIONOS | visionOS |
UNITY_WEBGL | WebGL |
UNITY_WSA | Universal Windows Platform |
UNITY_WSA_10_0 | UWP 10.0 |
UNITY_EMBEDDED_LINUX | Embedded Linux |
UNITY_QNX | QNX |
UNITY_FACEBOOK_INSTANT_GAMES | Facebook Instant Games |
| Define | Meaning |
|---|---|
UNITY_ANALYTICS | Analytics enabled |
UNITY_ASSERTIONS | Assertions enabled |
UNITY_64 | 64-bit platform |
ENABLE_MONO | Mono scripting backend |
ENABLE_IL2CPP | IL2CPP scripting backend |
ENABLE_VR | VR support enabled |
ENABLE_INPUT_SYSTEM | New Input System enabled |
ENABLE_LEGACY_INPUT_MANAGER | Legacy Input Manager enabled |
ENABLE_WINMD_SUPPORT | WinMD support |
DEVELOPMENT_BUILD | Development build |
UNITY_CLOUD_BUILD | Cloud Build |
| Define | API Level |
|---|---|
NET_STANDARD_2_0 | .NET Standard 2.0 |
NET_STANDARD_2_1 | .NET Standard 2.1 |
NET_STANDARD / NETSTANDARD | Any .NET Standard |
NETSTANDARD2_1 | .NET Standard 2.1 (C# define) |
NET_4_6 | .NET Framework |
NET_2_0 / NET_LEGACY | .NET 2.0 (legacy) |
CSHARP_7_3_OR_NEWER | C# 7.3+ available |
Format: UNITY_X, UNITY_X_Y, UNITY_X_Y_Z, UNITY_X_Y_OR_NEWER
Example for Unity 6000.0.33:
UNITY_6000, UNITY_6000_0, UNITY_6000_0_33, UNITY_6000_0_OR_NEWERArchitecture: ARM64 only (no ARMv7).
Scripting Backend: IL2CPP required for iOS (no Mono option).
Player Settings (Edit > Project Settings > Player > iOS):
com.CompanyName.ProductNameArchitectures: ARMv7 and ARM64 (ARM64 requires IL2CPP).
Player Settings (Edit > Project Settings > Player > Android):
com.YourCompanyName.YourProductNameKey Difference: Android hardware capabilities vary significantly between models. Test across multiple devices.
.data file into virtual memory file system (Emscripten)Use StringBuilder instead of string concatenation in loops:
// BAD: Creates ~15 GB temporary allocations for 100k iterations
string hugeString = "";
for (int i = 0; i < 100000; i++)
hugeString += "foo";
// GOOD: Pre-allocated StringBuilder
var sb = new StringBuilder();
for (int i = 0; i < 10000; i++)
sb.Append("foo");Use NativeArray<T> for temporary allocations to bypass GC:
using (var data = new NativeArray<byte>(size, Allocator.Temp))
{
// Memory freed immediately upon scope exit
}Use AssetBundles for asset loading (downloads directly into Unity heap without extra browser allocation).
Enable Data Caching (IndexedDB/Caching APIs) to reduce re-downloads.
Unity supports two JavaScript plug-in file types:
Limitation: Only ECMAScript 5 (ES5) syntax supported in .jslib and .jspre files. ES6 is not yet supported.
#### .jslib Plugin Example
// Assets/Plugins/WebGL/MyPlugin.jslib
mergeInto(LibraryManager.library, {
ShowAlert: function (message) {
window.alert(UTF8ToString(message));
},
});#### C# Calling JavaScript
using System.Runtime.InteropServices;
using UnityEngine;
public class WebGLBridge : MonoBehaviour
{
[DllImport("__Internal")]
private static extern void ShowAlert(string message);
void Start()
{
#if UNITY_WEBGL && !UNITY_EDITOR
ShowAlert("Hello from Unity!");
#endif
}
}IL2CPP is Unity's custom AOT scripting backend that converts C# to native code via C++.
Conversion Pipeline:
Advantages:
Disadvantages:
Configuration:
PlayerSettings.SetScriptingBackendBuild Speed Optimization:
| Criteria | IL2CPP | Mono |
|---|---|---|
| iOS builds | Required | Not available |
| Android builds | Recommended for ARM64 | Available for ARMv7 |
| Build iteration speed | Slower | Faster |
| Runtime performance | Better | Good |
| Console platforms | Required | Not available |
| WebGL | Required | Not available |
The Addressable Asset System (com.unity.addressables v2.9.1) enables referencing assets by address rather than direct paths.
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;
public class AddressableLoader : MonoBehaviour
{
[SerializeField] private AssetReference prefabRef;
async void Start()
{
AsyncOperationHandle<GameObject> handle =
Addressables.InstantiateAsync(prefabRef);
await handle.Task;
if (handle.Status == AsyncOperationStatus.Succeeded)
{
Debug.Log("Asset loaded successfully");
}
}
void OnDestroy()
{
// Always release when done
prefabRef.ReleaseAsset();
}
}public class PlatformManager : MonoBehaviour
{
void Start()
{
#if UNITY_IOS
Application.targetFrameRate = 60;
#elif UNITY_ANDROID
Application.targetFrameRate = 60;
Screen.sleepTimeout = SleepTimeout.NeverSleep;
#elif UNITY_WEBGL
// WebGL runs at browser refresh rate
#elif UNITY_STANDALONE
Application.targetFrameRate = -1; // Uncapped
#endif
}
}void ConfigureForPlatform()
{
switch (Application.platform)
{
case RuntimePlatform.IPhonePlayer:
SetupMobileControls();
break;
case RuntimePlatform.Android:
SetupMobileControls();
break;
case RuntimePlatform.WebGLPlayer:
SetupWebControls();
break;
default:
SetupDesktopControls();
break;
}
}#if DEVELOPMENT_BUILD
Debug.Log("Development build active");
#endif
#if ENABLE_IL2CPP
// IL2CPP-specific code
#elif ENABLE_MONO
// Mono-specific code
#endifStringBuilder or NativeArray<T>.System.Reflection.Emit, and runtime code generation will fail under IL2CPP. Design with AOT in mind.Application.persistentDataPath, Application.streamingAssetsPath, and Application.temporaryCachePath for cross-platform file access.| API | Purpose |
|---|---|
Application.platform | Runtime platform detection |
RuntimePlatform enum | Platform constants for runtime checks |
SystemInfo.graphicsDeviceType | Current graphics API (Vulkan, Metal, etc.) |
SystemInfo.supportsComputeShaders | Check compute shader support |
PlayerSettings.SetScriptingBackend() | Set IL2CPP or Mono via script |
Addressables.InstantiateAsync() | Load and instantiate addressable asset |
Addressables.LoadAssetAsync<T>() | Load addressable asset without instantiation |
AssetReference | Serializable reference to an addressable asset |
Application.targetFrameRate | Set target frame rate |
Screen.sleepTimeout | Prevent screen dimming on mobile |
Application.persistentDataPath | Platform-safe writable data path |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.