PlatformHelper.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. using UnityEngine;
  2. #if UNITY_EDITOR
  3. using UnityEditor;
  4. #endif
  5. namespace VLB
  6. {
  7. public class PlatformHelper
  8. {
  9. #if UNITY_EDITOR
  10. static BuildTarget ms_BuildTargetOverride = BuildTarget.NoTarget;
  11. public static void SetBuildTargetOverride(BuildTarget target)
  12. {
  13. ms_BuildTargetOverride = target;
  14. Config.Instance.RefreshShader(Config.RefreshShaderFlags.All);
  15. }
  16. static BuildTarget GetCurrentBuildTarget()
  17. {
  18. if (BuildPipeline.isBuildingPlayer && ms_BuildTargetOverride != BuildTarget.NoTarget) return ms_BuildTargetOverride;
  19. return EditorUserBuildSettings.activeBuildTarget;
  20. }
  21. static RuntimePlatform BuildTargetToRuntimePlatform(BuildTarget buildTarget)
  22. {
  23. #pragma warning disable 0618 // obsolete BuildTargets
  24. switch (buildTarget)
  25. {
  26. case BuildTarget.Android: return RuntimePlatform.Android;
  27. case BuildTarget.PS4: return RuntimePlatform.PS4;
  28. case BuildTarget.StandaloneLinux64: return RuntimePlatform.LinuxPlayer;
  29. case BuildTarget.StandaloneWindows: return RuntimePlatform.WindowsPlayer;
  30. case BuildTarget.StandaloneWindows64: return RuntimePlatform.WindowsPlayer;
  31. case BuildTarget.WSAPlayer: return RuntimePlatform.WSAPlayerARM;
  32. case BuildTarget.XboxOne: return RuntimePlatform.XboxOne;
  33. case BuildTarget.iOS: return RuntimePlatform.IPhonePlayer;
  34. case BuildTarget.tvOS: return RuntimePlatform.tvOS;
  35. case BuildTarget.WebGL: return RuntimePlatform.WebGLPlayer;
  36. #if UNITY_2017_1_OR_NEWER
  37. case BuildTarget.Switch: return RuntimePlatform.Switch;
  38. #endif
  39. #if UNITY_2017_3_OR_NEWER
  40. case BuildTarget.StandaloneOSX: return RuntimePlatform.OSXPlayer;
  41. #else
  42. case BuildTarget.StandaloneOSXUniversal:return RuntimePlatform.OSXPlayer;
  43. #endif
  44. #if UNITY_2019_3_OR_NEWER
  45. case BuildTarget.Stadia: return RuntimePlatform.Stadia;
  46. #endif
  47. #if UNITY_2020_2_OR_NEWER
  48. case BuildTarget.CloudRendering: return RuntimePlatform.CloudRendering;
  49. #endif
  50. #if UNITY_2021_1_OR_NEWER
  51. case BuildTarget.GameCoreScarlett: return RuntimePlatform.GameCoreScarlett;
  52. case BuildTarget.GameCoreXboxOne: return RuntimePlatform.GameCoreXboxOne;
  53. case BuildTarget.PS5: return RuntimePlatform.PS5;
  54. #endif
  55. // obsolete
  56. case BuildTarget.StandaloneOSXIntel: return RuntimePlatform.OSXPlayer;
  57. case BuildTarget.StandaloneOSXIntel64: return RuntimePlatform.OSXPlayer;
  58. case BuildTarget.StandaloneLinuxUniversal:return RuntimePlatform.LinuxPlayer;
  59. case BuildTarget.WiiU: return RuntimePlatform.WiiU;
  60. case BuildTarget.PSP2: return RuntimePlatform.PSP2;
  61. case BuildTarget.PS3: return RuntimePlatform.PS3;
  62. case BuildTarget.XBOX360: return RuntimePlatform.XBOX360;
  63. default: return (RuntimePlatform)(-1);
  64. }
  65. #pragma warning restore 0618
  66. }
  67. public static bool IsValidPlatformSuffix(string suffix)
  68. {
  69. if (string.IsNullOrEmpty(suffix))
  70. return true;
  71. foreach (var platform in System.Enum.GetNames(typeof(RuntimePlatform)))
  72. {
  73. if (suffix == platform)
  74. return true;
  75. }
  76. return false;
  77. }
  78. #endif // UNITY_EDITOR
  79. public static string GetCurrentPlatformSuffix()
  80. {
  81. #if UNITY_EDITOR
  82. return GetPlatformSuffix(BuildTargetToRuntimePlatform(GetCurrentBuildTarget()));
  83. #else
  84. return GetPlatformSuffix(Application.platform);
  85. #endif
  86. }
  87. static string GetPlatformSuffix(RuntimePlatform platform)
  88. {
  89. return platform.ToString();
  90. }
  91. }
  92. }