using System.Collections; using System.Collections.Generic; using UnityEngine; namespace SFramework { public class SPlatformInfo { private static string _unityEditorEditorUserBuildSettingsActiveBuildTarget; /// /// UnityEditor.EditorUserBuildSettings.activeBuildTarget, Can Run in any platform~ /// public static string UnityEditor_EditorUserBuildSettings_activeBuildTarget { get { if (Application.isPlaying && !string.IsNullOrEmpty(_unityEditorEditorUserBuildSettingsActiveBuildTarget)) { return _unityEditorEditorUserBuildSettingsActiveBuildTarget; } var assemblies = System.AppDomain.CurrentDomain.GetAssemblies(); foreach (var a in assemblies) { if (a.GetName().Name == "UnityEditor") { System.Type lockType = a.GetType("UnityEditor.EditorUserBuildSettings"); //var retObj = lockType.GetMethod(staticMethodName, // System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public) // .Invoke(null, args); //return retObj; var p = lockType.GetProperty("activeBuildTarget"); var em = p.GetGetMethod().Invoke(null, new object[] { }).ToString(); _unityEditorEditorUserBuildSettingsActiveBuildTarget = em; return em; } } return null; } } /// /// Different platform's assetBundles is incompatible. /// CosmosEngine put different platform's assetBundles in different folder. /// Here, get Platform name that represent the AssetBundles Folder. /// /// Platform folder Name public static string GetBuildPlatformName() { string buildPlatformName = "Windows"; // default if (Application.isEditor) { var buildTarget = UnityEditor_EditorUserBuildSettings_activeBuildTarget; //UnityEditor.EditorUserBuildSettings.activeBuildTarget; switch (buildTarget) { case "StandaloneOSX": case "StandaloneOSXIntel": case "StandaloneOSXIntel64": case "StandaloneOSXUniversal": buildPlatformName = "MacOS"; break; case "StandaloneWindows": // UnityEditor.BuildTarget.StandaloneWindows: case "StandaloneWindows64": // UnityEditor.BuildTarget.StandaloneWindows64: buildPlatformName = "Windows"; break; case "Android": // UnityEditor.BuildTarget.Android: buildPlatformName = "Android"; break; case "iPhone": // UnityEditor.BuildTarget.iPhone: case "iOS": buildPlatformName = "iOS"; break; default: Debug.Assert(false); break; } } else { switch (Application.platform) { case RuntimePlatform.OSXPlayer: buildPlatformName = "MacOS"; break; case RuntimePlatform.Android: buildPlatformName = "Android"; break; case RuntimePlatform.IPhonePlayer: buildPlatformName = "iOS"; break; case RuntimePlatform.WindowsPlayer: #if !UNITY_5_4_OR_NEWER case RuntimePlatform.WindowsWebPlayer: #endif buildPlatformName = "Windows"; break; default: Debug.Assert(false); break; } } return buildPlatformName; } } }