/// <summary> /// 显示平台数据 /// </summary> /// <param name="platform_info"></param> void DrawPlatformInfo(PublishPlatformInfo platform_info, PublishCacheChannelInfo cache_channel_info) { GUILayout.BeginHorizontal(); GUILayout.Label("平台名称", GUILayout.Width(100)); GUILayout.Label(platform_info.Name, GUILayout.Width(140)); GUILayout.Space(20); GUILayout.Label("BundleIdentifier", GUILayout.Width(120)); GUILayout.Label(platform_info.BundleIdentifier, GUILayout.Width(140)); GUILayout.Space(20); GUILayout.Label("Build", GUILayout.Width(75)); cache_channel_info.IsBuild = EditorGUILayout.Toggle(cache_channel_info.IsBuild, GUILayout.Width(30)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("BundleVersion", GUILayout.Width(100)); platform_info.BundleVersion = EditorGUILayout.TextField(platform_info.BundleVersion, GUILayout.Width(140)); GUILayout.Space(20); GUILayout.Label("BundleVersionCode", GUILayout.Width(120)); platform_info.BundleVersionCode = EditorGUILayout.IntField(platform_info.BundleVersionCode, GUILayout.Width(140)); GUILayout.Space(20); GUILayout.Label("CompileDefine", GUILayout.Width(100)); platform_info.CompileDefine = EditorGUILayout.TextField(platform_info.CompileDefine, GUILayout.Width(200)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("PackageName", GUILayout.Width(100)); platform_info.PackageName = EditorGUILayout.TextField(platform_info.PackageName, GUILayout.Width(140)); GUILayout.Space(20); GUILayout.EndHorizontal(); }
public string CompileDefine; //预定义宏 public void Copy(PublishPlatformInfo other) { Name = other.Name; BundleIdentifier = other.BundleIdentifier; BundleVersion = other.BundleVersion; BundleVersionCode = other.BundleVersionCode; PackageName = other.PackageName; CompileDefine = other.CompileDefine; }
public void Copy(PublishPlatformSet other) { type = other.type; name = other.name; foreach (var obj in other.list) { PublishPlatformInfo info = new PublishPlatformInfo(); info.Copy(obj); list.Add(info); } }
private static void HandleWebGLPlayerSetting(BuildTarget buildTarget, BuildTargetGroup targetGroup, PublishPlatformInfo platform_info, PublishCacheChannelInfo cache_channel_info, PublishCachePlatformInfo cache_plat_info) { //图像引擎 PlayerSettings.SetUseDefaultGraphicsAPIs(buildTarget, cache_plat_info.AutoGraphicsAPI); if (!cache_plat_info.AutoGraphicsAPI) { //TODO //UnityEngine.Rendering.GraphicsDeviceType[] gdt = new UnityEngine.Rendering.GraphicsDeviceType[] { UnityEngine.Rendering.GraphicsDeviceType.we}; //PlayerSettings.SetGraphicsAPIs(buildTarget, gdt); } //是否可以改变窗口大小 PlayerSettings.displayResolutionDialog = cache_plat_info.DisplayResDialog ? ResolutionDialogSetting.Enabled : ResolutionDialogSetting.Disabled; PlayerSettings.resizableWindow = cache_plat_info.ResizeableWindow; }
private static void HandleWinPlayerSetting(BuildTarget buildTarget, BuildTargetGroup targetGroup, PublishPlatformInfo platform_info, PublishCacheChannelInfo cache_channel_info, PublishCachePlatformInfo cache_plat_info) { //图像引擎 PlayerSettings.SetUseDefaultGraphicsAPIs(buildTarget, cache_plat_info.AutoGraphicsAPI); if (!cache_plat_info.AutoGraphicsAPI) { UnityEngine.Rendering.GraphicsDeviceType[] gdt = new UnityEngine.Rendering.GraphicsDeviceType[] { UnityEngine.Rendering.GraphicsDeviceType.Direct3D11, UnityEngine.Rendering.GraphicsDeviceType.Direct3D9 }; PlayerSettings.SetGraphicsAPIs(buildTarget, gdt); } }
private static void HandleIOSPlayerSetting(BuildTarget buildTarget, BuildTargetGroup targetGroup, PublishPlatformInfo platform_info, PublishCacheChannelInfo cache_channel_info, PublishCachePlatformInfo cache_plat_info) { //图像引擎 PlayerSettings.SetUseDefaultGraphicsAPIs(buildTarget, cache_plat_info.AutoGraphicsAPI); if (!cache_plat_info.AutoGraphicsAPI) { UnityEngine.Rendering.GraphicsDeviceType[] gdt = new UnityEngine.Rendering.GraphicsDeviceType[] { UnityEngine.Rendering.GraphicsDeviceType.OpenGLES3, UnityEngine.Rendering.GraphicsDeviceType.OpenGLES2 }; PlayerSettings.SetGraphicsAPIs(buildTarget, gdt); } //多线程渲染 PlayerSettings.MTRendering = !cache_plat_info.MultiThreadRender; //编译版本 PlayerSettings.iOS.buildNumber = platform_info.BundleVersionCode.ToString(); //cpu架构 switch (cache_plat_info.TargetDevice) { case eTargetDevice.iPadOnly: PlayerSettings.iOS.targetDevice = iOSTargetDevice.iPadOnly; break; case eTargetDevice.iPhoneAndiPad: PlayerSettings.iOS.targetDevice = iOSTargetDevice.iPhoneAndiPad; break; case eTargetDevice.iPhoneOnly: PlayerSettings.iOS.targetDevice = iOSTargetDevice.iPhoneOnly; break; } //SDK switch (cache_plat_info.IOSSdkVerions) { case eIOSSdkVerions.DeviceSDK: PlayerSettings.iOS.sdkVersion = iOSSdkVersion.DeviceSDK; break; case eIOSSdkVerions.SimulatorSDK: PlayerSettings.iOS.sdkVersion = iOSSdkVersion.SimulatorSDK; break; } //目标最低版本 PlayerSettings.iOS.targetOSVersionString = cache_plat_info.OSVersionString; //脚本优化 switch (cache_plat_info.IOSOptLevel) { case eIOSScriptCallOptimizationLevel.SlowAndSafe: PlayerSettings.iOS.scriptCallOptimization = ScriptCallOptimizationLevel.SlowAndSafe; break; case eIOSScriptCallOptimizationLevel.FastButNoExceptions: PlayerSettings.iOS.scriptCallOptimization = ScriptCallOptimizationLevel.FastButNoExceptions; break; } }
private static void HandleAndroidPlayerSetting(BuildTarget buildTarget, BuildTargetGroup targetGroup, PublishPlatformInfo platform_info, PublishCacheChannelInfo cache_channel_info, PublishCachePlatformInfo cache_plat_info) { //图像引擎 PlayerSettings.SetUseDefaultGraphicsAPIs(buildTarget, cache_plat_info.AutoGraphicsAPI); if (!cache_plat_info.AutoGraphicsAPI) { UnityEngine.Rendering.GraphicsDeviceType[] gdt = new UnityEngine.Rendering.GraphicsDeviceType[] { UnityEngine.Rendering.GraphicsDeviceType.OpenGLES3, UnityEngine.Rendering.GraphicsDeviceType.OpenGLES2 }; PlayerSettings.SetGraphicsAPIs(buildTarget, gdt); } //多线程渲染 PlayerSettings.MTRendering = !cache_plat_info.MultiThreadRender; //cpu架构 switch (cache_plat_info.TargetDevice) { case eTargetDevice.FAT: PlayerSettings.Android.targetDevice = AndroidTargetDevice.FAT; break; case eTargetDevice.ARMv7: PlayerSettings.Android.targetDevice = AndroidTargetDevice.ARMv7; break; case eTargetDevice.x86: PlayerSettings.Android.targetDevice = AndroidTargetDevice.x86; break; } //安装位置 switch (cache_plat_info.InstallLocation) { case eInstallLocation.Auto: PlayerSettings.Android.preferredInstallLocation = AndroidPreferredInstallLocation.Auto; break; case eInstallLocation.ForceInternal: PlayerSettings.Android.preferredInstallLocation = AndroidPreferredInstallLocation.ForceInternal; break; case eInstallLocation.PreferExternal: PlayerSettings.Android.preferredInstallLocation = AndroidPreferredInstallLocation.PreferExternal; break; } //SD卡读写 PlayerSettings.Android.forceSDCardPermission = cache_plat_info.SDCardPermission; //最小sdk版本 switch (cache_plat_info.MinAndroidSdkVersion) { case eAndroidSdkVersions.AndroidApiLevelAuto: PlayerSettings.Android.minSdkVersion = AndroidSdkVersions.AndroidApiLevelAuto; break; case eAndroidSdkVersions.AndroidApiLevel16: PlayerSettings.Android.minSdkVersion = AndroidSdkVersions.AndroidApiLevel16; break; case eAndroidSdkVersions.AndroidApiLevel17: PlayerSettings.Android.minSdkVersion = AndroidSdkVersions.AndroidApiLevel17; break; case eAndroidSdkVersions.AndroidApiLevel18: PlayerSettings.Android.minSdkVersion = AndroidSdkVersions.AndroidApiLevel18; break; case eAndroidSdkVersions.AndroidApiLevel19: PlayerSettings.Android.minSdkVersion = AndroidSdkVersions.AndroidApiLevel19; break; case eAndroidSdkVersions.AndroidApiLevel21: PlayerSettings.Android.minSdkVersion = AndroidSdkVersions.AndroidApiLevel21; break; case eAndroidSdkVersions.AndroidApiLevel22: PlayerSettings.Android.minSdkVersion = AndroidSdkVersions.AndroidApiLevel22; break; case eAndroidSdkVersions.AndroidApiLevel23: PlayerSettings.Android.minSdkVersion = AndroidSdkVersions.AndroidApiLevel23; break; case eAndroidSdkVersions.AndroidApiLevel24: PlayerSettings.Android.minSdkVersion = AndroidSdkVersions.AndroidApiLevel24; break; case eAndroidSdkVersions.AndroidApiLevel25: PlayerSettings.Android.minSdkVersion = AndroidSdkVersions.AndroidApiLevel25; break; } //代码剥离 switch (cache_plat_info.StrippingLevel) { case eStrippingLevel.Disabled: PlayerSettings.strippingLevel = StrippingLevel.Disabled; break; case eStrippingLevel.StripAssemblies: PlayerSettings.strippingLevel = StrippingLevel.StripAssemblies; break; case eStrippingLevel.StripByteCode: PlayerSettings.strippingLevel = StrippingLevel.StripByteCode; break; case eStrippingLevel.UseMicroMSCorlib: PlayerSettings.strippingLevel = StrippingLevel.UseMicroMSCorlib; break; } //是否分包 PlayerSettings.Android.useAPKExpansionFiles = cache_plat_info.APKExpansionFiles; PlayerSettings.Android.bundleVersionCode = platform_info.BundleVersionCode; if (!string.IsNullOrEmpty(cache_plat_info.KeyStorePath)) { PlayerSettings.Android.keystoreName = cache_plat_info.KeyStorePath; PlayerSettings.Android.keystorePass = cache_plat_info.KetStorePass; PlayerSettings.Android.keyaliasName = cache_plat_info.KeyAliasName; PlayerSettings.Android.keyaliasPass = cache_plat_info.KeyAliasPass; } }
/// <summary> /// 设置发布选项 /// </summary> /// <param name="target"></param> /// <param name="platform_info"></param> /// <param name="cache_channel_info"></param> /// <param name="cache_plat_info"></param> public static void BulidTarget(ePublishPlatformType target, PublishPlatformInfo platform_info, PublishCacheChannelInfo cache_channel_info, PublishCachePlatformInfo cache_plat_info) { BuildTarget buildTarget = GetBuildTargetByType(target); BuildTargetGroup targetGroup = GetTargetGroupByType(target); ///1.全局 PlayerSettings.companyName = "广州硕星"; PlayerSettings.productName = "机甲军团"; ///2.Resolution and Presentatio UIOrientation orientation = UIOrientation.LandscapeLeft; switch (cache_plat_info.Orientation) { case ScreenOrientation.AutoRotation: orientation = UIOrientation.AutoRotation; break; case ScreenOrientation.LandscapeLeft: orientation = UIOrientation.LandscapeLeft; break; case ScreenOrientation.LandscapeRight: orientation = UIOrientation.LandscapeRight; break; case ScreenOrientation.Portrait: orientation = UIOrientation.Portrait; break; case ScreenOrientation.PortraitUpsideDown: orientation = UIOrientation.PortraitUpsideDown; break; } PlayerSettings.defaultInterfaceOrientation = orientation; PlayerSettings.use32BitDisplayBuffer = false; ///3.Icon ///4.Splash Image PlayerSettings.SplashScreen.show = cache_plat_info.EnableUnitySplash; PlayerSettings.SplashScreen.showUnityLogo = cache_plat_info.EnableUnitySplash; ///5.RenderPath UnityEditor.Rendering.TierSettings ts = new UnityEditor.Rendering.TierSettings(); ts.renderingPath = cache_plat_info.RenderPath; UnityEditor.Rendering.EditorGraphicsSettings.SetTierSettings(targetGroup, UnityEngine.Rendering.GraphicsTier.Tier2, ts); ///6.BundleIdentifier PlayerSettings.applicationIdentifier = platform_info.BundleIdentifier; PlayerSettings.bundleVersion = platform_info.BundleVersion; ///7.预定义宏 if (!string.IsNullOrEmpty(platform_info.CompileDefine)) { PlayerSettings.SetScriptingDefineSymbolsForGroup(targetGroup, platform_info.CompileDefine); } ///8.IL2CPP if (target == ePublishPlatformType.Android || target == ePublishPlatformType.iOS) { switch (cache_plat_info.ScriptBackend) { case eScriptingImplementation.IL2CPP: PlayerSettings.SetScriptingBackend(targetGroup, ScriptingImplementation.IL2CPP); break; case eScriptingImplementation.Mono2x: PlayerSettings.SetScriptingBackend(targetGroup, ScriptingImplementation.Mono2x); break; } } ///9.net版本 ApiCompatibilityLevel api_level = ApiCompatibilityLevel.NET_2_0_Subset; switch (cache_plat_info.ApiLevel) { case eApiCompatibilityLevel.NET_2_0: api_level = ApiCompatibilityLevel.NET_2_0; break; case eApiCompatibilityLevel.NET_2_0_Subset: api_level = ApiCompatibilityLevel.NET_2_0_Subset; break; } PlayerSettings.SetApiCompatibilityLevel(targetGroup, api_level); ///9.gpu蒙皮 PlayerSettings.gpuSkinning = cache_plat_info.GUPSkin; switch (target) { case ePublishPlatformType.Android: HandleAndroidPlayerSetting(buildTarget, targetGroup, platform_info, cache_channel_info, cache_plat_info); break; case ePublishPlatformType.iOS: HandleIOSPlayerSetting(buildTarget, targetGroup, platform_info, cache_channel_info, cache_plat_info); break; case ePublishPlatformType.Win64: case ePublishPlatformType.Win32: HandleWinPlayerSetting(buildTarget, targetGroup, platform_info, cache_channel_info, cache_plat_info); break; case ePublishPlatformType.WebGL: HandleWebGLPlayerSetting(buildTarget, targetGroup, platform_info, cache_channel_info, cache_plat_info); break; } }
/// <summary> /// 发布一个 /// </summary> private static void BuildOne(string publish_path, ePublishPlatformType target, PublishPlatformSet platform_config, PublishPlatformInfo platform_info, PublishCacheChannelInfo cache_channel_info, PublishCachePlatformInfo cache_platform_info) { Log.Info("正在发布版本:" + platform_info.PackageName); BuildTarget build_target = GetBuildTargetByType(target); BuildTargetGroup target_group = GetTargetGroupByType(target); string[] scenes = FindEnabledEditorScenes(); //设置发布选项 BulidTarget(target, platform_info, cache_channel_info, cache_platform_info); //发布 EditorUserBuildSettings.SwitchActiveBuildTarget(target_group, build_target); BuildPipeline.BuildPlayer(scenes, GetSavePath(publish_path, target, platform_info.PackageName), build_target, BuildOptions.None); Log.Info("发布完成一个:" + platform_info.PackageName); }