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;
}
}
}