├── Editor.meta ├── Editor ├── ClientBuild.meta ├── ClientBuild │ ├── Abstract.meta │ ├── Abstract │ │ ├── IBuildCommands.cs │ │ ├── IBuildCommands.cs.meta │ │ ├── IUniBuildCommandsMap.cs │ │ ├── IUniBuildCommandsMap.cs.meta │ │ ├── IUniBuildConfigurationData.cs │ │ └── IUniBuildConfigurationData.cs.meta │ ├── ArgumentsProvider.cs │ ├── ArgumentsProvider.cs.meta │ ├── BuildArguments.cs │ ├── BuildArguments.cs.meta │ ├── BuildConfiguration.meta │ ├── BuildConfiguration │ │ ├── BuildCommandStep.cs │ │ ├── BuildCommandStep.cs.meta │ │ ├── EditorBuildConfiguration.cs │ │ ├── EditorBuildConfiguration.cs.meta │ │ ├── PreBuildCommandStep.cs │ │ ├── PreBuildCommandStep.cs.meta │ │ ├── UniBuildCommandsMap.cs │ │ ├── UniBuildCommandsMap.cs.meta │ │ ├── UniBuildConfigurationData.cs │ │ ├── UniBuildConfigurationData.cs.meta │ │ ├── UniBuilderConsoleConfiguration.cs │ │ ├── UniBuilderConsoleConfiguration.cs.meta │ │ ├── WebGlBuildData.cs │ │ └── WebGlBuildData.cs.meta │ ├── BuildEnvironmentType.cs │ ├── BuildEnvironmentType.cs.meta │ ├── BuildLogger.cs │ ├── BuildLogger.cs.meta │ ├── BuildParameters.cs │ ├── BuildParameters.cs.meta │ ├── BuildReportData.cs │ ├── BuildReportData.cs.meta │ ├── BuildReportLogger.cs │ ├── BuildReportLogger.cs.meta │ ├── Commands.meta │ ├── Commands │ │ ├── ApplyBuildArgumentsCommand.cs │ │ ├── ApplyBuildArgumentsCommand.cs.meta │ │ ├── ApplyWebGLSettingsCommand.cs │ │ ├── ApplyWebGLSettingsCommand.cs.meta │ │ ├── ArgumentsMap.cs │ │ ├── ArgumentsMap.cs.meta │ │ ├── BuildArgumentValue.cs │ │ ├── BuildArgumentValue.cs.meta │ │ ├── BuildCommands.cs │ │ ├── BuildCommands.cs.meta │ │ ├── BuildCommandsGroup.cs │ │ ├── BuildCommandsGroup.cs.meta │ │ ├── PostBuildCommands.meta │ │ ├── PostBuildCommands │ │ │ ├── UnityPostBuildCommand.cs │ │ │ └── UnityPostBuildCommand.cs.meta │ │ ├── PreBuildCommands.meta │ │ ├── PreBuildCommands │ │ │ ├── ApplyAndroidSettingsCommand.cs │ │ │ ├── ApplyAndroidSettingsCommand.cs.meta │ │ │ ├── ApplyArtifactNameCommand.cs │ │ │ ├── ApplyArtifactNameCommand.cs.meta │ │ │ ├── ApplyLocationByArtifactCommand.cs │ │ │ ├── ApplyLocationByArtifactCommand.cs.meta │ │ │ ├── ApplyScriptingDefineSymbolsCommand.cs │ │ │ ├── ApplyScriptingDefineSymbolsCommand.cs.meta │ │ │ ├── AssetsCommands.meta │ │ │ ├── AssetsCommands │ │ │ │ ├── ReimportAssetsCommand.cs │ │ │ │ └── ReimportAssetsCommand.cs.meta │ │ │ ├── BuildOptionsCommand.cs │ │ │ ├── BuildOptionsCommand.cs.meta │ │ │ ├── DefineSymbolsAssetCommand.cs │ │ │ ├── DefineSymbolsAssetCommand.cs.meta │ │ │ ├── DemoSCommand.cs │ │ │ ├── DemoSCommand.cs.meta │ │ │ ├── DisableUnityLogoCommand.cs │ │ │ ├── DisableUnityLogoCommand.cs.meta │ │ │ ├── PlayerSettingsCommand.cs │ │ │ ├── PlayerSettingsCommand.cs.meta │ │ │ ├── SerializableBuildCommand.cs │ │ │ ├── SerializableBuildCommand.cs.meta │ │ │ ├── SetManagedStrippingLevelCommand.cs │ │ │ ├── SetManagedStrippingLevelCommand.cs.meta │ │ │ ├── SetScriptingBackendCommand.cs │ │ │ ├── SetScriptingBackendCommand.cs.meta │ │ │ ├── SwitchActiveBuildTargetCommand.cs │ │ │ ├── SwitchActiveBuildTargetCommand.cs.meta │ │ │ ├── UniAndroidSettings.cs │ │ │ ├── UniAndroidSettings.cs.meta │ │ │ ├── UnityBuildCommand.cs │ │ │ ├── UnityBuildCommand.cs.meta │ │ │ ├── UnityPreBuildCommand.cs │ │ │ ├── UnityPreBuildCommand.cs.meta │ │ │ ├── UnitySerializablePreBuildCommand.cs │ │ │ ├── UnitySerializablePreBuildCommand.cs.meta │ │ │ ├── UpdateAndroidKeyStoreCommand.cs │ │ │ ├── UpdateAndroidKeyStoreCommand.cs.meta │ │ │ ├── UpdateVersionCommand.meta │ │ │ └── UpdateVersionCommand │ │ │ │ ├── BuildVersionProvider.cs │ │ │ │ ├── BuildVersionProvider.cs.meta │ │ │ │ ├── UpdateVersionCommand.cs │ │ │ │ └── UpdateVersionCommand.cs.meta │ │ ├── ScriptableCommandsGroup.cs │ │ ├── ScriptableCommandsGroup.cs.meta │ │ ├── SetApplicationIdCommand.cs │ │ ├── SetApplicationIdCommand.cs.meta │ │ ├── SharedCommands.cs │ │ └── SharedCommands.cs.meta │ ├── ExecutionOrderType.cs │ ├── ExecutionOrderType.cs.meta │ ├── Extensions.meta │ ├── Extensions │ │ ├── ArgumentsProviderExtension.cs │ │ ├── ArgumentsProviderExtension.cs.meta │ │ ├── UnityBuildExtensions.cs │ │ └── UnityBuildExtensions.cs.meta │ ├── Generator.meta │ ├── Generator │ │ ├── BuildConfigurationBuilder.cs │ │ ├── BuildConfigurationBuilder.cs.meta │ │ ├── BuildMenuGenerator.cs │ │ ├── BuildMenuGenerator.cs.meta │ │ ├── CloudBuildMethodsGenerator.cs │ │ └── CloudBuildMethodsGenerator.cs.meta │ ├── Interfaces.meta │ ├── Interfaces │ │ ├── IArgumentsProvider.cs │ │ ├── IArgumentsProvider.cs.meta │ │ ├── IBuildParameters.cs │ │ ├── IBuildParameters.cs.meta │ │ ├── IUniBuilderConfiguration.cs │ │ ├── IUniBuilderConfiguration.cs.meta │ │ ├── IUnityBuildCommand.cs │ │ ├── IUnityBuildCommand.cs.meta │ │ ├── IUnityBuildCommandInfo.cs │ │ ├── IUnityBuildCommandInfo.cs.meta │ │ ├── IUnityBuildCommandValidator.cs │ │ ├── IUnityBuildCommandValidator.cs.meta │ │ ├── IUnityPlayerBuilder.cs │ │ ├── IUnityPlayerBuilder.cs.meta │ │ ├── IUnityPostBuildCommand.cs │ │ ├── IUnityPostBuildCommand.cs.meta │ │ ├── IUnityPreBuildCommand.cs │ │ └── IUnityPreBuildCommand.cs.meta │ ├── Parsers.meta │ ├── Parsers │ │ ├── EnumArgumentParser.cs │ │ └── EnumArgumentParser.cs.meta │ ├── Processors.meta │ ├── Processors │ │ ├── BuildConfigurationsPostProcessor.cs │ │ └── BuildConfigurationsPostProcessor.cs.meta │ ├── UniBuildReportBuilder.cs │ ├── UniBuildReportBuilder.cs.meta │ ├── UniBuildTool.cs │ ├── UniBuildTool.cs.meta │ ├── UnityPlayerBuilder.cs │ └── UnityPlayerBuilder.cs.meta ├── Resources.meta ├── Resources │ ├── CloudBuildMethodsTemplateAsset.txt │ ├── CloudBuildMethodsTemplateAsset.txt.meta │ ├── CloudBuildTemplateAsset.txt │ └── CloudBuildTemplateAsset.txt.meta ├── UnityCloudBuild.meta ├── UnityCloudBuild │ ├── CloudBuildArgs.cs │ ├── CloudBuildArgs.cs.meta │ ├── CloudBuildHelper.cs │ ├── CloudBuildHelper.cs.meta │ ├── UnityCloudPostBuild.cs │ └── UnityCloudPostBuild.cs.meta ├── Windows.meta ├── Windows │ ├── UniBuildConfigurationAsset.cs │ ├── UniBuildConfigurationAsset.cs.meta │ ├── UniBuildConfigurationWindow.cs │ ├── UniBuildConfigurationWindow.cs.meta │ ├── UniBuildItem.cs │ └── UniBuildItem.cs.meta ├── unigame.buildpipeline.editor.asmdef └── unigame.buildpipeline.editor.asmdef.meta ├── GitAssets.meta ├── GitAssets ├── build_configs_windows.png ├── build_configs_windows.png.meta ├── build_map_window.png ├── build_map_window.png.meta ├── commands-package.png ├── commands-package.png.meta ├── commands1.png ├── commands1.png.meta ├── commands2.png ├── commands2.png.meta ├── demo_build_pipeline.png ├── demo_build_pipeline.png.meta ├── serializable-pipeline.png ├── serializable-pipeline.png.meta ├── unibuild1.png ├── unibuild1.png.meta ├── unibuild2.png ├── unibuild2.png.meta ├── unibuild3.png ├── unibuild3.png.meta ├── unibuild4.png ├── unibuild4.png.meta ├── unibuild5.png ├── unibuild5.png.meta ├── unibuild6.png ├── unibuild6.png.meta ├── unibuild7.png ├── unibuild7.png.meta ├── unibuild8.png └── unibuild8.png.meta ├── LICENSE ├── LICENSE.meta ├── README.md ├── README.md.meta ├── Tests.meta ├── Tests ├── Editor.meta ├── Editor │ ├── ApplyArtifactNameCommandTests.cs │ ├── ApplyArtifactNameCommandTests.cs.meta │ ├── ApplyLocationByArtifactCommandTests.cs │ ├── ApplyLocationByArtifactCommandTests.cs.meta │ ├── BuildOptionsCommandsTests.cs │ ├── BuildOptionsCommandsTests.cs.meta │ ├── BuildParametersTests.cs │ ├── BuildParametersTests.cs.meta │ ├── PipelineCommandsTests.cs │ ├── PipelineCommandsTests.cs.meta │ ├── UpdateVersionBuildCommand.cs │ ├── UpdateVersionBuildCommand.cs.meta │ ├── VersionCommandTests.cs │ └── VersionCommandTests.cs.meta ├── unigame.unibuildpipeline.tests.asmdef └── unigame.unibuildpipeline.tests.asmdef.meta ├── package.json └── package.json.meta /Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 73fea5dd2d852e24aab8699b414c0084 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/ClientBuild.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1bf47a5ec8301684ebc1c084789584c4 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Abstract.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6792dd214899f3445b94c6229b2b4d65 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Abstract/IBuildCommands.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using UniModules.UniGame.UniBuild.Editor.ClientBuild.Interfaces; 3 | 4 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Abstract 5 | { 6 | public interface IBuildCommands 7 | { 8 | IEnumerable Commands { get; } 9 | 10 | } 11 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/Abstract/IBuildCommands.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1df7b453496c45cba1730223318de736 3 | timeCreated: 1623944503 -------------------------------------------------------------------------------- /Editor/ClientBuild/Abstract/IUniBuildCommandsMap.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Abstract 5 | { 6 | using global::UniGame.Core.Runtime; 7 | using global::UniGame.UniBuild.Editor.ClientBuild.BuildConfiguration; 8 | using Interfaces; 9 | 10 | public interface IUniBuildCommandsMap : 11 | IUnityBuildCommandValidator, 12 | INamedItem 13 | { 14 | public bool PlayerBuildEnabled { get; } 15 | 16 | UniBuildConfigurationData BuildData { get; } 17 | 18 | IEnumerable PreBuildCommands { get; } 19 | 20 | IEnumerable PostBuildCommands { get; } 21 | 22 | IEnumerable LoadCommands(Func filter = null) where T : IUnityBuildCommand; 23 | } 24 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/Abstract/IUniBuildCommandsMap.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6f4d114e4f6f419991a0534e0b368562 3 | timeCreated: 1588847698 -------------------------------------------------------------------------------- /Editor/ClientBuild/Abstract/IUniBuildConfigurationData.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Abstract 2 | { 3 | using UnityEditor; 4 | 5 | public interface IUniBuildConfigurationData 6 | { 7 | BuildTargetGroup BuildTargetGroup { get; } 8 | BuildTarget BuildTarget { get; } 9 | string ArtifactName { get; } 10 | } 11 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/Abstract/IUniBuildConfigurationData.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ba563500b9d841f2a8da9d8299797477 3 | timeCreated: 1591182840 -------------------------------------------------------------------------------- /Editor/ClientBuild/ArgumentsProvider.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ccf8e480ab3da7941971b450204dcb1b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/BuildArguments.cs: -------------------------------------------------------------------------------- 1 | namespace UniGame.UniBuild.Editor.ClientBuild 2 | { 3 | public class BuildArguments 4 | { 5 | public const string ProductNameKey = "-productName"; 6 | public const string BuildOptions = "-buildOptions"; 7 | public const string GitBranchKey = "-gitBranch"; 8 | public const string BundleVersionKey = "-bundleVersion"; 9 | public const string BuildNumberKey = "-buildnumber"; 10 | public const string BuildOutputNameKey = "-outputFileName"; 11 | public const string BuildOutputFolderKey = "-outputFolder"; 12 | public const string BundleIdKey = "-bundleId"; 13 | public const string BuildTargetKey = "-buildTarget"; 14 | public const string BuildTargetGroupKey = "-buildTargeGroupt"; 15 | public const string StandaloneBuildSubTargetKey = "-standaloneBuildSubtarget"; 16 | public const string Linux64BuildTargetKey = "-buildLinux64Player"; 17 | public const string LinuxUniversalBuildTargetKey = "-buildOSXUniversalPlayer"; 18 | public const string Windows64PlayerBuildTargetKey = "-buildWindows64Player"; 19 | public const string ScriptingImplementationKey = "-scriptingImplementation"; 20 | public const string BuildEnvironmentType = "-buildEnvironmentType"; 21 | public const string DevelopmentBuild = "-developmentBuild"; 22 | public const string AutoConnectProfiler = "-autoconnectProfiler"; 23 | public const string DeepProfiling = "-deepProfiling"; 24 | public const string ScriptDebugging = "-scriptDebugging"; 25 | 26 | //WebGL 27 | public const string WebShowDiagnostics = "-webShowDiagnostics"; 28 | public const string WebCompressionFormat = "-webCompressionFormat"; 29 | public const string WebMemorySize = "-webMemorySize"; 30 | public const string WebDataCaching = "-webDataCaching"; 31 | public const string WebCodeOptimization = "-webCodeOptimization"; 32 | 33 | } 34 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/BuildArguments.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b9dfaf1279eff9e4ea858cb4c9f54250 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/BuildConfiguration.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8a4a9c829a449fb4ebe4788e4489ec6b 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/ClientBuild/BuildConfiguration/BuildCommandStep.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.BuildConfiguration 2 | { 3 | using System; 4 | using System.Collections.Generic; 5 | using Commands.PreBuildCommands; 6 | using global::UniGame.UniBuild.Editor.ClientBuild.Interfaces; 7 | using UniModules.Editor; 8 | using Interfaces; 9 | using UnityEngine; 10 | 11 | #if ODIN_INSPECTOR 12 | using Sirenix.OdinInspector; 13 | #endif 14 | 15 | #if TRI_INSPECTOR 16 | using TriInspector; 17 | #endif 18 | 19 | [Serializable] 20 | public class BuildCommandStep 21 | { 22 | [Space] 23 | #if ODIN_INSPECTOR || TRI_INSPECTOR 24 | [ShowIf(nameof(IsUnityCommandInitialized))] 25 | [InlineEditor()] 26 | #endif 27 | #if ODIN_INSPECTOR 28 | [FoldoutGroup("$GroupLabel")] 29 | [ValueDropdown(nameof(GetBuildCommands))] 30 | #endif 31 | #if TRI_INSPECTOR 32 | [Dropdown(nameof(GetBuildCommands))] 33 | #endif 34 | public UnityBuildCommand buildCommand = null; 35 | 36 | [Space] 37 | [SerializeReference] 38 | #if ODIN_INSPECTOR || TRI_INSPECTOR 39 | [HideLabel] 40 | [ShowIf(nameof(IsSerializedCommandInitialized))] 41 | [InlineProperty] 42 | #endif 43 | #if ODIN_INSPECTOR 44 | [FoldoutGroup("$GroupLabel")] 45 | #endif 46 | public IUnityBuildCommand serializableCommand = null; 47 | 48 | public string GroupLabel => buildCommand !=null 49 | ? buildCommand.Name 50 | : serializableCommand!=null && serializableCommand is not EmptyBuildCommand 51 | ? serializableCommand.Name : "command"; 52 | 53 | public bool IsEmptySerializedEmpty => serializableCommand is null or EmptyBuildCommand; 54 | 55 | public bool IsUnityCommandInitialized => buildCommand != null || (buildCommand == null && IsEmptySerializedEmpty); 56 | 57 | 58 | public bool IsSerializedCommandInitialized => (serializableCommand != null && serializableCommand is not EmptyBuildCommand) || 59 | (buildCommand == null && IsEmptySerializedEmpty); 60 | 61 | 62 | public IEnumerable GetCommands() 63 | { 64 | if (buildCommand != null) 65 | yield return buildCommand; 66 | if (serializableCommand != null) 67 | yield return serializableCommand; 68 | } 69 | 70 | 71 | #if TRI_INSPECTOR 72 | private IEnumerable> GetTriVectorValues() 73 | { 74 | foreach (var command in AssetEditorTools.GetAssets()) 75 | { 76 | yield return new TriDropdownItem() 77 | { 78 | Text = command.name, 79 | Value = command, 80 | }; 81 | } 82 | } 83 | #endif 84 | 85 | public IEnumerable GetBuildCommands() 86 | { 87 | return AssetEditorTools.GetAssets(); 88 | } 89 | } 90 | 91 | [Serializable] 92 | public class EmptyBuildCommand : IUnityBuildCommand 93 | { 94 | public bool Validate(IUniBuilderConfiguration config) 95 | { 96 | return true; 97 | } 98 | 99 | public bool IsActive => false; 100 | 101 | public string GroupLabel => Name; 102 | 103 | public string Name => nameof(EmptyBuildCommand); 104 | 105 | public void Execute(IUniBuilderConfiguration configuration) 106 | { 107 | 108 | } 109 | } 110 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/BuildConfiguration/BuildCommandStep.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dbfd7716226949a2b30d92c71e27639c 3 | timeCreated: 1597958569 -------------------------------------------------------------------------------- /Editor/ClientBuild/BuildConfiguration/EditorBuildConfiguration.cs: -------------------------------------------------------------------------------- 1 | using UnityEditor.Build.Reporting; 2 | 3 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.BuildConfiguration 4 | { 5 | using System; 6 | using global::UniGame.UniBuild.Editor.ClientBuild.Interfaces; 7 | using Interfaces; 8 | 9 | [Serializable] 10 | public class EditorBuildConfiguration : IUniBuilderConfiguration 11 | { 12 | private readonly IArgumentsProvider arguments; 13 | private readonly BuildParameters buildParameters; 14 | private BuildReport _buildReport; 15 | 16 | public EditorBuildConfiguration(IArgumentsProvider argumentsProvider, BuildParameters parameters) 17 | { 18 | arguments = argumentsProvider; 19 | buildParameters = parameters; 20 | } 21 | 22 | public IArgumentsProvider Arguments => arguments; 23 | 24 | public BuildParameters BuildParameters => buildParameters; 25 | 26 | public BuildReport BuildReport 27 | { 28 | get => _buildReport; 29 | set => _buildReport = value; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Editor/ClientBuild/BuildConfiguration/EditorBuildConfiguration.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 46c3fffe49a14f145b0f6930b11f213d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/BuildConfiguration/PreBuildCommandStep.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.BuildConfiguration 2 | { 3 | using System; 4 | using Commands.PreBuildCommands; 5 | 6 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/BuildConfiguration/PreBuildCommandStep.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4635791cf5b0464ca6dcaa5d4c04397d 3 | timeCreated: 1597958560 -------------------------------------------------------------------------------- /Editor/ClientBuild/BuildConfiguration/UniBuildCommandsMap.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: abe2c65eec7f13244bb9e744825a8329 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/BuildConfiguration/UniBuildConfigurationData.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 86928d0ef7ad43a4b9fd25c7adfa7fc5 3 | timeCreated: 1588770565 -------------------------------------------------------------------------------- /Editor/ClientBuild/BuildConfiguration/UniBuilderConsoleConfiguration.cs: -------------------------------------------------------------------------------- 1 | namespace UniGame.UniBuild.Editor.ClientBuild.BuildConfiguration 2 | { 3 | using UniGame.UniBuild.Editor.ClientBuild.Interfaces; 4 | using UniModules.UniGame.UniBuild.Editor.ClientBuild; 5 | using UniModules.UniGame.UniBuild.Editor.ClientBuild.Extensions; 6 | using UniModules.UniGame.UniBuild.Editor.ClientBuild.Parsers; 7 | using UnityEditor; 8 | using UnityEditor.Build.Reporting; 9 | using UnityEngine; 10 | 11 | public class UniBuilderConsoleConfiguration : IUniBuilderConfiguration 12 | { 13 | private EnumArgumentParser buildTargetParser; 14 | private EnumArgumentParser buildTargetGroupParser; 15 | 16 | private ArgumentsProvider argumentsProvider; 17 | private BuildParameters buildParameters; 18 | private BuildReport _buildReport; 19 | 20 | public UniBuilderConsoleConfiguration(string[] commandLineArgs) 21 | { 22 | argumentsProvider = new ArgumentsProvider(commandLineArgs); 23 | 24 | var buildTarget = argumentsProvider.GetBuildTarget(); 25 | var buildTargetGroup = argumentsProvider.GetBuildTargetGroup(); 26 | 27 | var buildData = new UniBuildConfigurationData() 28 | { 29 | buildTarget = buildTarget, 30 | buildTargetGroup = buildTargetGroup, 31 | }; 32 | 33 | buildParameters = new BuildParameters(buildData, argumentsProvider); 34 | buildParameters.Execute(); 35 | 36 | Debug.Log(argumentsProvider); 37 | } 38 | 39 | public IArgumentsProvider Arguments => argumentsProvider; 40 | 41 | public BuildParameters BuildParameters => buildParameters; 42 | 43 | public BuildReport BuildReport 44 | { 45 | get => _buildReport; 46 | set => _buildReport = value; 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /Editor/ClientBuild/BuildConfiguration/UniBuilderConsoleConfiguration.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d7108c43d6341ef4486090e3a46b1c2d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/BuildConfiguration/WebGlBuildData.cs: -------------------------------------------------------------------------------- 1 | namespace UniGame.UniBuild.Editor.ClientBuild.BuildConfiguration 2 | { 3 | using System; 4 | using UnityEditor; 5 | using UnityEngine; 6 | 7 | #if UNITY_WEBGL 8 | using UnityEditor.WebGL; 9 | #endif 10 | 11 | [Serializable] 12 | public class WebGlBuildData 13 | { 14 | public bool ShowDiagnostics = false; 15 | public Vector2Int Resolution = new(1080,1920); 16 | public int MaxMemorySize = 1024; 17 | public bool DataCaching = true; 18 | public WebGLExceptionSupport ExceptionSupport = WebGLExceptionSupport.None; 19 | public WebGLDebugSymbolMode DebugSymbolMode = WebGLDebugSymbolMode.Off; 20 | public WebGLCompressionFormat CompressionFormat = WebGLCompressionFormat.Brotli; 21 | public WebGLLinkerTarget LinkerTarget = WebGLLinkerTarget.Wasm; 22 | 23 | #if UNITY_WEBGL 24 | public WasmCodeOptimization CodeOptimization = WasmCodeOptimization.BuildTimes; 25 | #endif 26 | } 27 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/BuildConfiguration/WebGlBuildData.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 02a33ec9e1a948148227e7d49bb34b98 3 | timeCreated: 1720001819 -------------------------------------------------------------------------------- /Editor/ClientBuild/BuildEnvironmentType.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild 2 | { 3 | public enum BuildEnvironmentType 4 | { 5 | Custom, 6 | UnityCloudBuild, 7 | } 8 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/BuildEnvironmentType.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 46d0392484e745c1849ad1b9422678e3 3 | timeCreated: 1560662304 -------------------------------------------------------------------------------- /Editor/ClientBuild/BuildLogger.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Text; 5 | using UniModules.Editor; 6 | using UniModules.UniCore.Runtime.DateTime; 7 | using UnityEngine; 8 | 9 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild 10 | { 11 | public static class BuildLogger 12 | { 13 | private const string MessageFormat = "=== UNIBUILD [{0}] : {1} {2}\n"; 14 | private const string DurationFormat = "| DURATION [{0} sec]"; 15 | private static string BuildDirectory = "Builds".ToAbsoluteProjectPath(); 16 | private static string BuildLogPath = BuildDirectory.CombinePath("last_build_log.log"); 17 | private static string BuildStartMessage = "=== UNIBUILD BUILD REPORT ===\n\n"; 18 | 19 | private static Dictionary _timeLog = new Dictionary(); 20 | private static StringBuilder _buildLog = new StringBuilder(); 21 | 22 | public static void Initialize() 23 | { 24 | _timeLog = new Dictionary(); 25 | _buildLog ??= new StringBuilder(); 26 | _buildLog.Clear(); 27 | _buildLog.AppendLine(BuildStartMessage); 28 | 29 | if (!Directory.Exists(BuildDirectory)) 30 | Directory.CreateDirectory(BuildDirectory); 31 | 32 | File.WriteAllText(BuildLogPath,BuildStartMessage); 33 | } 34 | 35 | public static void Finish() => _buildLog?.Clear(); 36 | 37 | public static void Log(string log) 38 | { 39 | Log(log,string.Empty,false); 40 | } 41 | 42 | public static string LogWithTimeTrack(string log) 43 | { 44 | Debug.Log(log); 45 | var id = Guid.NewGuid().ToString(); 46 | Append(log,id,true); 47 | return id; 48 | } 49 | 50 | public static void Log(string log,string trackId,bool resetTime = false) 51 | { 52 | Debug.Log(log); 53 | Append(log,trackId,resetTime); 54 | } 55 | 56 | public static void Append(string log,string trackId,bool resetDuration) 57 | { 58 | if (string.IsNullOrEmpty(log)) 59 | return; 60 | 61 | if (resetDuration) _timeLog.Remove(trackId); 62 | 63 | var now = DateTime.Now; 64 | var nowUnix = (int)now.ToUnixTimestamp(); 65 | 66 | if (!_timeLog.TryGetValue(trackId, out var logTime)) 67 | { 68 | if (!string.IsNullOrEmpty(trackId)) 69 | { 70 | logTime = nowUnix; 71 | _timeLog[trackId] = logTime; 72 | } 73 | } 74 | 75 | var durationTime = nowUnix - logTime; 76 | var duration = durationTime > 0 ? string.Format(DurationFormat,durationTime) : string.Empty; 77 | var message = string.Format(MessageFormat,now,log,duration); 78 | 79 | _buildLog.AppendLine(message); 80 | 81 | File.AppendAllText(BuildLogPath,message); 82 | } 83 | 84 | public static void Print() => Debug.Log(_buildLog); 85 | 86 | } 87 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/BuildLogger.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0fb930586dd34919b2349c0f8d7f97b7 3 | timeCreated: 1638952767 -------------------------------------------------------------------------------- /Editor/ClientBuild/BuildParameters.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4f6a880e20dd445db2c5f3460d26c57a 3 | timeCreated: 1554815860 -------------------------------------------------------------------------------- /Editor/ClientBuild/BuildReportData.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild 2 | { 3 | using UnityEditor.Build.Reporting; 4 | 5 | public class BuildReportData 6 | { 7 | public bool writeToFile = true; 8 | public bool writeLog = true; 9 | public BuildReport report; 10 | } 11 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/BuildReportData.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: edfbd4b8adc84326a5fae4d01648b0a4 3 | timeCreated: 1723523466 -------------------------------------------------------------------------------- /Editor/ClientBuild/BuildReportLogger.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild 2 | { 3 | using System.Text; 4 | using UnityEditor.Build.Reporting; 5 | 6 | public class BuildReportLogger 7 | { 8 | 9 | public static string GetBuildReport(BuildReport report) { 10 | 11 | var stringBuilder = new StringBuilder(1000); 12 | 13 | AppendBuildSteps(report,stringBuilder); 14 | 15 | AppendSummary(report, stringBuilder); 16 | 17 | return stringBuilder.ToString(); 18 | } 19 | 20 | public static void AppendSummary(BuildReport report, StringBuilder builder) { 21 | 22 | var summary = report.summary; 23 | 24 | builder.AppendLine("=========BUILD REPORT SUMMARY==========="); 25 | builder.AppendLine($"\tOUTPUT: {summary.outputPath}"); 26 | builder.AppendLine($"\tBUILD RESULT: {summary.result}"); 27 | builder.AppendFormat("\tBuild Target : {0} Group : {1}", summary.platform, summary.platformGroup); 28 | builder.AppendLine(); 29 | 30 | builder.AppendFormat("\tSTART AT: {0}", summary.buildStartedAt); 31 | builder.AppendLine(); 32 | builder.AppendFormat("\tEND AT: {0}", summary.buildEndedAt); 33 | builder.AppendLine(); 34 | builder.AppendFormat("\tTOTAL TIME: {0}", summary.totalTime); 35 | builder.AppendLine(); 36 | 37 | builder.AppendLine($"\tTOTAL ERRORS: {summary.totalErrors}"); 38 | builder.AppendLine($"\tTOTAL WARNINGS: {summary.totalWarnings}"); 39 | builder.AppendLine($"\tTOTAL SIZE: {summary.totalSize}"); 40 | 41 | builder.AppendLine("=========BUILD SUMMARY FINISHED========="); 42 | } 43 | 44 | public static void AppendBuildSteps(BuildReport report, StringBuilder builder) { 45 | 46 | builder.AppendLine("=========BUILD STEPS========="); 47 | 48 | var steps = report.steps; 49 | for (var i = 0; i < steps.Length; i++) 50 | { 51 | AppendBuildStep(ref steps[i], builder); 52 | builder.AppendLine(); 53 | } 54 | builder.AppendLine("=========BUILD STEPS FINISHED========="); 55 | } 56 | 57 | public static void AppendBuildStep(ref BuildStep step, StringBuilder builder) 58 | { 59 | builder.AppendFormat("\tStep: {0}", step.name); 60 | builder.AppendFormat("\tDuration (sec): {0}", step.duration.TotalSeconds); 61 | for (var i = 0; i < step.messages.Length; i++) { 62 | var message = step.messages[i]; 63 | builder.AppendLine($"\t\tTYPE: {message.type}"); 64 | builder.AppendLine(message.content); 65 | } 66 | } 67 | 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /Editor/ClientBuild/BuildReportLogger.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 12050897fdc736b4dabdc19edf9158af 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b7c155dcf7c31b346b1494a04afe7364 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/ApplyBuildArgumentsCommand.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild 2 | { 3 | using System; 4 | using global::UniGame.UniBuild.Editor.ClientBuild.Interfaces; 5 | using Editor.ClientBuild; 6 | using Editor.ClientBuild.Commands.PreBuildCommands; 7 | using Editor.ClientBuild.Interfaces; 8 | 9 | 10 | [Serializable] 11 | public class ApplyBuildArgumentsCommand : SerializableBuildCommand 12 | { 13 | public bool logArguments = true; 14 | 15 | public ArgumentsMap argumentsMap = new ArgumentsMap(); 16 | 17 | public override void Execute(IUniBuilderConfiguration buildParameters) 18 | { 19 | var arguments = buildParameters.Arguments; 20 | if (arguments == null) return; 21 | 22 | foreach (var argPair in argumentsMap.arguments) 23 | { 24 | if(logArguments) 25 | BuildLogger.Log($"\n\t\tBUILD ARG: {argPair.Key} : {argPair.Value}"); 26 | arguments.SetValue(argPair.Key, argPair.Value.Value); 27 | } 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/ApplyBuildArgumentsCommand.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8e0ae845a858426ba97fc9583d4b77f2 3 | timeCreated: 1654988824 -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/ApplyWebGLSettingsCommand.cs: -------------------------------------------------------------------------------- 1 | namespace Game.Modules.UniModules.UniGame.UniBuild.Editor.ClientBuild.Commands 2 | { 3 | using System; 4 | using global::UniGame.UniBuild.Editor.ClientBuild.BuildConfiguration; 5 | using global::UniGame.UniBuild.Editor.ClientBuild.Interfaces; 6 | using global::UniModules.UniGame.UniBuild.Editor.ClientBuild.Commands.PreBuildCommands; 7 | 8 | using UnityEditor; 9 | 10 | #if ODIN_INSPECTOR 11 | using Sirenix.OdinInspector; 12 | #elif TRI_INSPECTOR 13 | using TriInspector; 14 | #endif 15 | 16 | [Serializable] 17 | public class ApplyWebGLSettingsCommand : SerializableBuildCommand 18 | { 19 | public WebGlBuildData webGlBuildData = new(); 20 | 21 | public override void Execute(IUniBuilderConfiguration configuration) 22 | { 23 | Execute(); 24 | configuration.BuildParameters 25 | .UpdateWebGLData(webGlBuildData); 26 | } 27 | 28 | #if ODIN_INSPECTOR || TRI_INSPECTOR 29 | [Button] 30 | #endif 31 | public void Execute() 32 | { 33 | UpdateWebGLData(webGlBuildData); 34 | } 35 | 36 | public void UpdateWebGLData(WebGlBuildData data) 37 | { 38 | PlayerSettings.WebGL.showDiagnostics = webGlBuildData.ShowDiagnostics; 39 | PlayerSettings.WebGL.compressionFormat = webGlBuildData.CompressionFormat; 40 | PlayerSettings.WebGL.memorySize = webGlBuildData.MaxMemorySize; 41 | PlayerSettings.WebGL.dataCaching = webGlBuildData.DataCaching; 42 | PlayerSettings.WebGL.debugSymbolMode = webGlBuildData.DebugSymbolMode; 43 | PlayerSettings.WebGL.exceptionSupport = webGlBuildData.ExceptionSupport; 44 | PlayerSettings.defaultWebScreenWidth = webGlBuildData.Resolution.x; 45 | PlayerSettings.defaultWebScreenHeight = webGlBuildData.Resolution.y; 46 | PlayerSettings.WebGL.linkerTarget = webGlBuildData.LinkerTarget; 47 | 48 | #if UNITY_WEBGL 49 | UnityEditor.WebGL.UserBuildSettings.codeOptimization = data.CodeOptimization; 50 | #endif 51 | } 52 | } 53 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/ApplyWebGLSettingsCommand.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5da986d7703b463a9c2c23bde42f6aa3 3 | timeCreated: 1720008123 -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/ArgumentsMap.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild 2 | { 3 | using System; 4 | using Core.Runtime.DataStructure; 5 | 6 | [Serializable] 7 | public class ArgumentsMap 8 | { 9 | public bool isEnable = true; 10 | public SerializableDictionary arguments = new(); 11 | } 12 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/ArgumentsMap.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a17e0df91cf34838a52f63b8cc420d57 3 | timeCreated: 1710874415 -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/BuildArgumentValue.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild 2 | { 3 | using System; 4 | using UnityEngine; 5 | 6 | #if ODIN_INSPECTOR 7 | using Sirenix.OdinInspector; 8 | #endif 9 | 10 | #if TRI_INSPECTOR 11 | using TriInspector; 12 | #endif 13 | 14 | [Serializable] 15 | public class BuildArgumentValue 16 | { 17 | #if ODIN_INSPECTOR 18 | [VerticalGroup] 19 | #endif 20 | public string Value; 21 | 22 | #if ODIN_INSPECTOR 23 | [VerticalGroup] 24 | #endif 25 | [Tooltip("override outer arguments with this value")] 26 | public bool Override; 27 | } 28 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/BuildArgumentValue.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 87f82365bd704c06ad714d7998c9b729 3 | timeCreated: 1710874419 -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/BuildCommands.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace UniModules.UniGame.UniBuild 3 | { 4 | using System; 5 | using System.Collections.Generic; 6 | using Editor.ClientBuild.Abstract; 7 | using Editor.ClientBuild.BuildConfiguration; 8 | using Editor.ClientBuild.Interfaces; 9 | using UnityEngine; 10 | 11 | #if ODIN_INSPECTOR 12 | using Sirenix.OdinInspector; 13 | #endif 14 | 15 | #if TRI_INSPECTOR 16 | using TriInspector; 17 | #endif 18 | 19 | [Serializable] 20 | public class BuildCommands : IBuildCommands 21 | { 22 | private static Color _oddColor = new Color(0.2f, 0.4f, 0.3f); 23 | 24 | #region inspector 25 | 26 | #if ODIN_INSPECTOR 27 | [Searchable] 28 | [ListDrawerSettings(ElementColor = nameof(GetElementColor))]//ListElementLabelName = "GroupLabel" 29 | #endif 30 | [Space] 31 | public List commands = new List(); 32 | 33 | #endregion 34 | 35 | public IEnumerable Commands => FilterActiveCommands(commands); 36 | 37 | private IEnumerable FilterActiveCommands(IEnumerable filteredCommands) 38 | { 39 | var items = new List(); 40 | 41 | foreach (var command in filteredCommands) { 42 | items.AddRange(command.GetCommands()); 43 | } 44 | 45 | return items; 46 | } 47 | 48 | private Color GetElementColor(int index, Color defaultColor) 49 | { 50 | var result = index % 2 == 0 51 | ? _oddColor : defaultColor; 52 | return result; 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/BuildCommands.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a886beb7cd986ca41aed6e57ad67fffa 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/BuildCommandsGroup.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UniModules.UniGame.UniBuild.Editor.ClientBuild; 3 | using UniModules.UniGame.UniBuild.Editor.ClientBuild.Commands.PreBuildCommands; 4 | using UniModules.UniGame.UniBuild.Editor.ClientBuild.Interfaces; 5 | using UnityEngine; 6 | 7 | namespace UniModules.UniGame.UniBuild 8 | { 9 | using global::UniGame.UniBuild.Editor.ClientBuild.Interfaces; 10 | 11 | #if ODIN_INSPECTOR 12 | using Sirenix.OdinInspector; 13 | #endif 14 | 15 | #if TRI_INSPECTOR 16 | using TriInspector; 17 | #endif 18 | 19 | [Serializable] 20 | public class BuildCommandsGroup : SerializableBuildCommand,IUnityPreBuildCommand,IUnityPostBuildCommand 21 | { 22 | private const string LogMessageFormat = "GROUP [{0}] : \n{1}"; 23 | 24 | #if ODIN_INSPECTOR 25 | [MultiLineProperty] 26 | #endif 27 | public string description; 28 | 29 | #if ODIN_INSPECTOR || TRI_INSPECTOR 30 | [InlineProperty] 31 | [HideLabel] 32 | #endif 33 | public BuildCommands commands = new BuildCommands(); 34 | 35 | public override void Execute(IUniBuilderConfiguration configuration) 36 | { 37 | ExecuteCommands(configuration); 38 | } 39 | 40 | private void ExecuteCommands(IUniBuilderConfiguration configuration) 41 | { 42 | foreach (var buildCommand in commands.Commands) 43 | { 44 | var commandName = buildCommand.Name; 45 | var message = $"\tEXECUTE COMMAND {commandName}"; 46 | var logMessage = string.Format(LogMessageFormat, commandName, message); 47 | 48 | var id = BuildLogger.LogWithTimeTrack(logMessage); 49 | 50 | buildCommand.Execute(configuration); 51 | 52 | message = $"\tEXECUTE COMMAND [{commandName}] FINISHED"; 53 | logMessage = string.Format(LogMessageFormat, commandName, message); 54 | 55 | BuildLogger.Log(logMessage,id); 56 | } 57 | } 58 | 59 | 60 | } 61 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/BuildCommandsGroup.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 925b663e135c466b8c57f439509d85aa 3 | timeCreated: 1623948384 -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PostBuildCommands.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f7e01987d2711ff4b8bda1b4b7ae89c4 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PostBuildCommands/UnityPostBuildCommand.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Commands.PostBuildCommands { 2 | using Interfaces; 3 | using PreBuildCommands; 4 | 5 | public abstract class UnityPostBuildCommand : 6 | UnityBuildCommand, 7 | IUnityPostBuildCommand 8 | { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PostBuildCommands/UnityPostBuildCommand.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d6e3b44a510e34e408e61659127a0648 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4e16ff2a9bc36bc4e8772f46640eabd4 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/ApplyAndroidSettingsCommand.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Commands.PreBuildCommands 2 | { 3 | using System; 4 | using global::UniGame.UniBuild.Editor.ClientBuild.Interfaces; 5 | using Interfaces; 6 | using UnityEditor; 7 | using UnityEditor.Android; 8 | using UnityEditor.Build; 9 | 10 | #if ODIN_INSPECTOR 11 | using Sirenix.OdinInspector; 12 | #endif 13 | 14 | #if TRI_INSPECTOR 15 | using TriInspector; 16 | #endif 17 | 18 | [Serializable] 19 | public class ApplyAndroidSettingsCommand : UnitySerializablePreBuildCommand 20 | { 21 | #if ODIN_INSPECTOR || TRI_INSPECTOR 22 | [InlineProperty] 23 | [HideLabel] 24 | #endif 25 | public UniAndroidSettings AndroidSettings = new UniAndroidSettings(); 26 | 27 | public override void Execute(IUniBuilderConfiguration buildParameters) => Execute(); 28 | 29 | #if ODIN_INSPECTOR || TRI_INSPECTOR 30 | [Button] 31 | #endif 32 | public void Execute() 33 | { 34 | #if UNITY_2021_1_OR_NEWER 35 | EditorUserBuildSettings.androidCreateSymbols = AndroidSettings.AndroidDebugSymbolsMode; 36 | #endif 37 | EditorUserBuildSettings.connectProfiler = AndroidSettings.AutoConnetcProfiler; 38 | 39 | if (AndroidSettings.overrideTextureCompression) 40 | { 41 | EditorUserBuildSettings.androidBuildSubtarget = AndroidSettings.TextureCompression; 42 | 43 | #if UNITY_6000_0_OR_NEWER 44 | PlayerSettings.Android.textureCompressionFormats = AndroidSettings.TextureCompressionFormats; 45 | #endif 46 | } 47 | 48 | EditorUserBuildSettings.androidBuildType = AndroidSettings.AndroidBuildType; 49 | EditorUserBuildSettings.buildAppBundle = AndroidSettings.BuildAppBundle; 50 | EditorUserBuildSettings.allowDebugging = AndroidSettings.AllowDebugging; 51 | EditorUserBuildSettings.exportAsGoogleAndroidProject = AndroidSettings.ExportAsGoogleAndroidProject; 52 | EditorUserBuildSettings.development = AndroidSettings.IsDevelopment; 53 | 54 | PlayerSettings.Android.targetArchitectures = AndroidSettings.AndroidArchitecture; 55 | PlayerSettings.Android.forceSDCardPermission = AndroidSettings.ForceSDCardPermission; 56 | PlayerSettings.Android.forceInternetPermission = AndroidSettings.ForceInternetPermission; 57 | #if UNITY_2023_1_OR_NEWER 58 | PlayerSettings.Android.splitApplicationBinary = AndroidSettings.SplitApplicationBinary; 59 | #else 60 | EditorUserBuildSettings.androidETC2Fallback = AndroidSettings.ETC2Fallback; 61 | PlayerSettings.Android.useAPKExpansionFiles = AndroidSettings.SplitApplicationBinary; 62 | #endif 63 | 64 | #if !UNITY_2023_1_OR_NEWER 65 | PlayerSettings.SetApiCompatibilityLevel(BuildTargetGroup.Android, AndroidSettings.ApiCompatibilityLevel); 66 | PlayerSettings.SetScriptingBackend(BuildTargetGroup.Android, AndroidSettings.ScriptingBackend); 67 | PlayerSettings.SetIl2CppCompilerConfiguration(BuildTargetGroup.Android,AndroidSettings.CppCompilerConfiguration); 68 | #else 69 | PlayerSettings.SetApiCompatibilityLevel(NamedBuildTarget.Android, AndroidSettings.ApiCompatibilityLevel); 70 | PlayerSettings.SetScriptingBackend(NamedBuildTarget.Android, AndroidSettings.ScriptingBackend); 71 | PlayerSettings.SetIl2CppCompilerConfiguration(NamedBuildTarget.Android,AndroidSettings.CppCompilerConfiguration); 72 | #endif 73 | #if UNITY_6000_0_OR_NEWER 74 | UserBuildSettings.DebugSymbols.format = AndroidSettings.DebugSymbolFormat; 75 | #endif 76 | 77 | } 78 | } 79 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/ApplyAndroidSettingsCommand.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 302bb1acc6854f842a273bdf53bca1d8 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/ApplyArtifactNameCommand.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0f5c19b7ff326174b852a2b9520d1299 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/ApplyLocationByArtifactCommand.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Commands.PreBuildCommands 2 | { 3 | using UniModules.Editor; 4 | using System.IO; 5 | using global::UniGame.Core.Runtime.Extension; 6 | using UnityEditor; 7 | using System; 8 | using global::UniGame.UniBuild.Editor.ClientBuild.Interfaces; 9 | using Interfaces; 10 | 11 | [Serializable] 12 | public class ApplyLocationByArtifactCommand : SerializableBuildCommand 13 | { 14 | 15 | public ArtifactLocationOption option = ArtifactLocationOption.Append; 16 | 17 | public bool useArtifactNameAsFolderPath = true; 18 | 19 | public string location; 20 | 21 | public bool appendBuildTarget = true; 22 | 23 | public override void Execute(IUniBuilderConfiguration configuration) 24 | { 25 | var buildParameters = configuration.BuildParameters; 26 | var resultLocation = buildParameters.outputFolder; 27 | var artifact = buildParameters.outputFile; 28 | var buildTarget = buildParameters.buildTarget; 29 | 30 | resultLocation =CreateArtifactLocation(artifact,resultLocation,buildTarget); 31 | buildParameters.outputFolder = resultLocation; 32 | } 33 | 34 | public string CreateArtifactLocation(string artifactName,string sourceLocation,BuildTarget buildTarget) 35 | { 36 | var artifact = Path 37 | .GetFileNameWithoutExtension(artifactName) 38 | .RemoveSpecialAndDotsCharacters() 39 | .RemoveWhiteSpaces(); 40 | 41 | var locationPath = location 42 | .RemoveSpecialAndDotsCharacters() 43 | .RemoveWhiteSpaces(); 44 | 45 | locationPath = option == ArtifactLocationOption.Replace 46 | ? locationPath 47 | : sourceLocation.CombinePath(locationPath); 48 | 49 | locationPath = appendBuildTarget ? locationPath.CombinePath(buildTarget.ToString()) : locationPath; 50 | locationPath = useArtifactNameAsFolderPath ? locationPath.CombinePath(artifact) : locationPath; 51 | return locationPath.CombinePath(string.Empty); 52 | } 53 | } 54 | 55 | public enum ArtifactLocationOption 56 | { 57 | Append, 58 | Replace 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/ApplyLocationByArtifactCommand.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b62373c8d3ed37d45af70c0041f2c6e2 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/ApplyScriptingDefineSymbolsCommand.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Commands.PreBuildCommands 2 | { 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using global::UniGame.UniBuild.Editor.ClientBuild.Interfaces; 8 | using Interfaces; 9 | using UnityEditor; 10 | using UnityEditor.Build; 11 | using UnityEngine; 12 | 13 | #if ODIN_INSPECTOR 14 | using Sirenix.OdinInspector; 15 | #endif 16 | 17 | #if TRI_INSPECTOR 18 | using TriInspector; 19 | #endif 20 | 21 | [Serializable] 22 | public class ApplyScriptingDefineSymbolsCommand : UnitySerializablePreBuildCommand 23 | { 24 | private const string DefinesSeparator = ";"; 25 | 26 | [SerializeField] 27 | public string definesKey = "-defineValues"; 28 | 29 | [SerializeField] 30 | public List defaultDefines = new List(); 31 | 32 | [SerializeField] 33 | public List removeDefines = new List(); 34 | 35 | public override void Execute(IUniBuilderConfiguration configuration) 36 | { 37 | if (!configuration.Arguments.GetStringValue(definesKey, out var defineValues)) 38 | { 39 | defineValues = string.Empty; 40 | } 41 | 42 | Execute(defineValues); 43 | } 44 | 45 | public void Execute(List addKeys, List removeKeys, string definesValue = "") 46 | { 47 | var activeBuildGroup = EditorUserBuildSettings.selectedBuildTargetGroup; 48 | var namedGroup = NamedBuildTarget.FromBuildTargetGroup(activeBuildGroup); 49 | PlayerSettings.GetScriptingDefineSymbols(namedGroup, out var symbolsValue); 50 | 51 | var origin = symbolsValue.ToArray(); 52 | var symbols = symbolsValue; 53 | var buildDefines = definesValue.Split(new[] { DefinesSeparator }, StringSplitOptions.None); 54 | 55 | var defines = new List(symbols.Length + buildDefines.Length + addKeys.Count); 56 | 57 | defines.AddRange(symbols); 58 | defines.AddRange(buildDefines); 59 | defines.AddRange(addKeys); 60 | defines.RemoveAll(removeKeys.Contains); 61 | defines.RemoveAll(string.IsNullOrEmpty); 62 | 63 | defines = defines.Distinct().ToList(); 64 | 65 | if (defines.Count == 0) return; 66 | 67 | if (origin.All(defines.Contains) && defines.All(origin.Contains)) 68 | return; 69 | 70 | var definesBuilder = new StringBuilder(300); 71 | 72 | foreach (var define in defines) 73 | { 74 | definesBuilder.Append(define); 75 | definesBuilder.Append(DefinesSeparator); 76 | } 77 | 78 | PlayerSettings.SetScriptingDefineSymbols(namedGroup, definesBuilder.ToString()); 79 | } 80 | 81 | public void Execute(string defineValues) 82 | { 83 | Execute(defaultDefines, removeDefines, defineValues); 84 | } 85 | 86 | #if ODIN_INSPECTOR || TRI_INSPECTOR 87 | [Button] 88 | #endif 89 | public void Execute() => Execute(string.Empty); 90 | } 91 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/ApplyScriptingDefineSymbolsCommand.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b4f3a32670ed0d2419e6449f2ef473d5 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/AssetsCommands.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f080c2d4c7c87174d9e6bcf343b01139 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/AssetsCommands/ReimportAssetsCommand.cs: -------------------------------------------------------------------------------- 1 | using UniModules.UniGame.UniBuild.Editor.ClientBuild.Interfaces; 2 | 3 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Commands.PreBuildCommands.AssetsCommands 4 | { 5 | using System.Collections.Generic; 6 | using global::UniGame.UniBuild.Editor.ClientBuild.Interfaces; 7 | using UnityEditor; 8 | using UnityEngine; 9 | 10 | /// 11 | /// reimport target assets locations 12 | /// or target assets 13 | /// 14 | public class ReimportAssetsCommand : UnitySerializablePreBuildCommand 15 | { 16 | public List assets = new List(); 17 | 18 | public ImportAssetOptions ImportAssetOptions = ImportAssetOptions.ImportRecursive; 19 | 20 | public override void Execute(IUniBuilderConfiguration buildParameters) 21 | { 22 | foreach (var asset in assets) 23 | { 24 | if(!asset) continue; 25 | var assetPath = AssetDatabase.GetAssetPath(asset); 26 | AssetDatabase.ImportAsset(assetPath, ImportAssetOptions); 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/AssetsCommands/ReimportAssetsCommand.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0368e63e70a7bc341a2cd6cffb699a8c 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/BuildOptionsCommand.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Commands.PreBuildCommands 2 | { 3 | using System; 4 | using global::UniGame.UniBuild.Editor.ClientBuild.Interfaces; 5 | using Interfaces; 6 | using Parsers; 7 | using UnityEditor; 8 | using UnityEngine; 9 | 10 | /// 11 | /// https://docs.unity3d.com/ScriptReference/BuildOptions.html 12 | /// any build parameter and be used by template "-[BuildOptions Item]" 13 | /// 14 | [Serializable] 15 | public class BuildOptionsCommand : UnitySerializablePreBuildCommand 16 | { 17 | public bool setIncrementalIl2CppBuild = true; 18 | 19 | [SerializeField] 20 | public BuildOptions[] _buildOptions = new BuildOptions[] {BuildOptions.None}; 21 | 22 | public override void Execute(IUniBuilderConfiguration configuration) 23 | { 24 | var enumBuildOptionsParser = new EnumArgumentParser(); 25 | var buildOptions = enumBuildOptionsParser.Parse(configuration.Arguments); 26 | var options = BuildOptions.None; 27 | 28 | for (int i = 0; i < buildOptions.Count; i++) { 29 | options |= buildOptions[i]; 30 | } 31 | 32 | foreach (var buildValue in _buildOptions) { 33 | options |= buildValue; 34 | } 35 | 36 | configuration.BuildParameters.SetBuildOptions(options,false); 37 | 38 | } 39 | 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/BuildOptionsCommand.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4f12282ad62d52b4c91df2acaac8fb40 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/DefineSymbolsAssetCommand.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Commands.PreBuildCommands 2 | { 3 | using System; 4 | using global::UniGame.UniBuild.Editor.ClientBuild.Interfaces; 5 | using Interfaces; 6 | using UnityEngine; 7 | 8 | #if ODIN_INSPECTOR 9 | using Sirenix.OdinInspector; 10 | #endif 11 | 12 | #if TRI_INSPECTOR 13 | using TriInspector; 14 | #endif 15 | 16 | [Serializable] 17 | [CreateAssetMenu(menuName = "UniBuild/Commands/DefineSymbolsAssetCommand",fileName = nameof(DefineSymbolsAssetCommand))] 18 | public class DefineSymbolsAssetCommand : UnityPreBuildCommand 19 | { 20 | [SerializeField] 21 | #if ODIN_INSPECTOR || TRI_INSPECTOR 22 | [InlineProperty] 23 | [HideLabel] 24 | #endif 25 | private ApplyScriptingDefineSymbolsCommand _command = new ApplyScriptingDefineSymbolsCommand(); 26 | 27 | public override void Execute(IUniBuilderConfiguration configuration) 28 | { 29 | _command.Execute(configuration); 30 | } 31 | 32 | #if ODIN_INSPECTOR || TRI_INSPECTOR 33 | [Button("Apply Defines")] 34 | #endif 35 | public void Execute() => _command.Execute(string.Empty); 36 | 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/DefineSymbolsAssetCommand.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c2518b7d24b74e34cbd553c85cfe9bf5 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/DemoSCommand.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Commands.PreBuildCommands 2 | { 3 | using System; 4 | using global::UniGame.UniBuild.Editor.ClientBuild.Interfaces; 5 | using Interfaces; 6 | 7 | [Serializable] 8 | public class DemoSCommand : UnitySerializablePreBuildCommand 9 | { 10 | public override void Execute(IUniBuilderConfiguration buildParameters) 11 | { 12 | 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/DemoSCommand.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cb0f790daf8c4c11bbca13ec620ea8e4 3 | timeCreated: 1597943331 -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/DisableUnityLogoCommand.cs: -------------------------------------------------------------------------------- 1 | using UniGame.Core.Runtime; 2 | 3 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Commands.PreBuildCommands { 4 | using System; 5 | using global::UniGame.UniBuild.Editor.ClientBuild.Interfaces; 6 | using Interfaces; 7 | using UnityEditor; 8 | 9 | #if ODIN_INSPECTOR 10 | using Sirenix.OdinInspector; 11 | #endif 12 | 13 | #if TRI_INSPECTOR 14 | using TriInspector; 15 | #endif 16 | 17 | [Serializable] 18 | public class DisableUnityLogoCommand : UnitySerializablePreBuildCommand, ICommand 19 | { 20 | 21 | public bool enableSplashScreen = false; 22 | 23 | public bool showUnityLogo = false; 24 | 25 | public override void Execute(IUniBuilderConfiguration buildParameters) => Execute(); 26 | 27 | #if ODIN_INSPECTOR || TRI_INSPECTOR 28 | [Button] 29 | #endif 30 | public void Execute() 31 | { 32 | PlayerSettings.SplashScreen.show = enableSplashScreen; 33 | PlayerSettings.SplashScreen.showUnityLogo = showUnityLogo; 34 | AssetDatabase.SaveAssets(); 35 | } 36 | 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/DisableUnityLogoCommand.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8f2531749ffe61142a21e40203580d76 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/PlayerSettingsCommand.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UniGame.UniBuild.Editor.ClientBuild.Interfaces; 3 | using UniModules.UniGame.UniBuild.Editor.ClientBuild.Commands.PreBuildCommands; 4 | using UniModules.UniGame.UniBuild.Editor.ClientBuild.Interfaces; 5 | using UnityEditor; 6 | 7 | #if ODIN_INSPECTOR 8 | using Sirenix.OdinInspector; 9 | #endif 10 | 11 | #if TRI_INSPECTOR 12 | using TriInspector; 13 | #endif 14 | 15 | [Serializable] 16 | public class PlayerSettingsCommand : SerializableBuildCommand 17 | { 18 | public bool setIncrementalIl2CppBuild = true; 19 | 20 | public override void Execute(IUniBuilderConfiguration buildParameters) 21 | { 22 | Execute(buildParameters.BuildParameters.buildTargetGroup); 23 | } 24 | 25 | #if ODIN_INSPECTOR || TRI_INSPECTOR 26 | [Button] 27 | #endif 28 | public void Execute(BuildTargetGroup targetGroup) 29 | { 30 | PlayerSettings.SetIncrementalIl2CppBuild(targetGroup,setIncrementalIl2CppBuild); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/PlayerSettingsCommand.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f5562e22a0440bb468f13a0852fc373b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/SerializableBuildCommand.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Commands.PreBuildCommands 2 | { 3 | using System; 4 | using global::UniGame.UniBuild.Editor.ClientBuild.Interfaces; 5 | using Interfaces; 6 | using Sirenix.OdinInspector; 7 | using UniModules.Editor; 8 | using UnityEngine; 9 | 10 | [Serializable] 11 | public abstract class SerializableBuildCommand : IUnityBuildCommand 12 | { 13 | #if ODIN_INSPECTOR 14 | [InlineButton(nameof(OpenScript),SdfIconType.Folder2Open)] 15 | #endif 16 | #if TRI_INSPECTOR || ODIN_INSPECTOR 17 | [GUIColor("GetButtonColor")] 18 | #endif 19 | [SerializeField] 20 | public bool isActive = true; 21 | 22 | public bool IsActive => isActive; 23 | 24 | public virtual string Name => GetType().Name; 25 | 26 | public virtual bool Validate(IUniBuilderConfiguration config) => isActive; 27 | 28 | public abstract void Execute(IUniBuilderConfiguration buildParameters); 29 | 30 | #if TRI_INSPECTOR 31 | [Button] 32 | #endif 33 | public void OpenScript() 34 | { 35 | GetType().OpenScript(); 36 | } 37 | 38 | private Color GetButtonColor() 39 | { 40 | return isActive ? 41 | new Color(0.2f, 1f, 0.2f) : 42 | new Color(1, 0.6f, 0.4f); 43 | return Color.green; 44 | } 45 | } 46 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/SerializableBuildCommand.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6c25ab6656564d5db8bc1884c5655e5a 3 | timeCreated: 1597943497 -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/SetManagedStrippingLevelCommand.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Commands.PreBuildCommands 2 | { 3 | using global::UniGame.UniBuild.Editor.ClientBuild.Interfaces; 4 | using Interfaces; 5 | using UnityEditor; 6 | using UnityEngine; 7 | 8 | /// 9 | /// update current project version 10 | /// 11 | [SerializeField] 12 | public class SetManagedStrippingLevelCommand : UnitySerializablePreBuildCommand 13 | { 14 | [SerializeField] 15 | private ManagedStrippingLevel _managedStrippingLevel = ManagedStrippingLevel.Disabled; 16 | 17 | public override void Execute(IUniBuilderConfiguration configuration) 18 | { 19 | var buildParameters = configuration.BuildParameters; 20 | 21 | PlayerSettings.SetManagedStrippingLevel(buildParameters.buildTargetGroup,_managedStrippingLevel); 22 | } 23 | 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/SetManagedStrippingLevelCommand.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cdea528f54db57441adc3ecef4f020cb 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/SetScriptingBackendCommand.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Commands.PreBuildCommands 2 | { 3 | using System; 4 | using global::UniGame.UniBuild.Editor.ClientBuild.Interfaces; 5 | using Interfaces; 6 | using UnityEditor; 7 | using UnityEngine; 8 | 9 | /// 10 | /// update current project version 11 | /// 12 | [Serializable] 13 | public class SetScriptingBackendCommand : UnitySerializablePreBuildCommand 14 | { 15 | [SerializeField] 16 | private string l2cppEnabled = "-l2cppEnabled"; 17 | 18 | private ScriptingImplementation _defaultBackend = ScriptingImplementation.Mono2x; 19 | 20 | public override void Execute(IUniBuilderConfiguration configuration) 21 | { 22 | var arguments = configuration.Arguments; 23 | var buildParameters = configuration.BuildParameters; 24 | 25 | var scriptingBackend = arguments.Contains(l2cppEnabled) ? 26 | ScriptingImplementation.IL2CPP : 27 | _defaultBackend; 28 | 29 | #if FORCE_MONO 30 | scriptingBackend = ScriptingImplementation.Mono2x; 31 | #elif FORCE_IL2CPP 32 | scriptingBackend = ScriptingImplementation.IL2CPP; 33 | #endif 34 | 35 | switch (buildParameters.buildTargetGroup) { 36 | case BuildTargetGroup.Standalone: 37 | case BuildTargetGroup.Android: 38 | PlayerSettings.SetScriptingBackend(buildParameters.buildTargetGroup,scriptingBackend); 39 | Debug.Log($"Set ScriptingBackend: {scriptingBackend}"); 40 | return; 41 | } 42 | 43 | 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/SetScriptingBackendCommand.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 79ae848079f461e4d8a1fcf8b3150fc3 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/SwitchActiveBuildTargetCommand.cs: -------------------------------------------------------------------------------- 1 | using UniModules.UniGame.UniBuild.Editor.ClientBuild.Interfaces; 2 | 3 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Commands.PreBuildCommands 4 | { 5 | using System; 6 | using global::UniGame.UniBuild.Editor.ClientBuild.Interfaces; 7 | using UnityEditor; 8 | 9 | [Serializable] 10 | public class SwitchActiveBuildTargetCommand : UnitySerializablePreBuildCommand 11 | { 12 | 13 | public BuildTargetGroup BuildTargetGroup = BuildTargetGroup.Android; 14 | public BuildTarget BuildTarget = BuildTarget.Android; 15 | 16 | public override void Execute(IUniBuilderConfiguration buildParameters) 17 | { 18 | EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup,BuildTarget); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/SwitchActiveBuildTargetCommand.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f95395673983fa8418a0702352641818 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/UniAndroidSettings.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Commands.PreBuildCommands 2 | { 3 | using System; 4 | using global::UniCore.Runtime.Attributes; 5 | using Sirenix.OdinInspector; 6 | using Unity.Android.Types; 7 | using UnityEditor; 8 | using UnityEngine; 9 | using UnityEngine.Serialization; 10 | using AndroidArchitecture = UnityEditor.AndroidArchitecture; 11 | using AndroidBuildType = UnityEditor.AndroidBuildType; 12 | 13 | [Serializable] 14 | public class UniAndroidSettings 15 | { 16 | public AndroidBuildType AndroidBuildType = AndroidBuildType.Development; 17 | 18 | public AndroidArchitecture AndroidArchitecture = AndroidArchitecture.ARMv7; 19 | 20 | public ApiCompatibilityLevel ApiCompatibilityLevel = ApiCompatibilityLevel.NET_4_6; 21 | 22 | public bool BuildAppBundle = false; 23 | 24 | public bool AllowDebugging = false; 25 | 26 | public bool IsDevelopment = false; 27 | 28 | public bool ExportAsGoogleAndroidProject; 29 | 30 | public bool ForceSDCardPermission = false; 31 | 32 | public bool ForceInternetPermission = false; 33 | 34 | /// 35 | /// UseAPKExpansionFiles is deprecated in Unity 2023.1 36 | /// 37 | [Tooltip("equivalent to PlayerSettings.Android.UseAPKExpansionFiles for Unity before 2023.1")] 38 | public bool SplitApplicationBinary = false; 39 | public bool AutoConnetcProfiler = false; 40 | 41 | public Il2CppCompilerConfiguration CppCompilerConfiguration = Il2CppCompilerConfiguration.Debug; 42 | 43 | public bool overrideTextureCompression = true; 44 | 45 | [ShowIf(nameof(overrideTextureCompression))] 46 | public MobileTextureSubtarget TextureCompression = MobileTextureSubtarget.ASTC; 47 | [ShowIf(nameof(overrideTextureCompression))] 48 | public TextureCompressionFormat[] TextureCompressionFormats = new TextureCompressionFormat[] 49 | { 50 | TextureCompressionFormat.ASTC 51 | }; 52 | 53 | public ScriptingImplementation ScriptingBackend = ScriptingImplementation.Mono2x; 54 | 55 | #if UNITY_2023_1_OR_NEWER 56 | 57 | #else 58 | public AndroidETC2Fallback ETC2Fallback = AndroidETC2Fallback.Quality32BitDownscaled; 59 | #endif 60 | 61 | #if UNITY_2021_1_OR_NEWER 62 | public AndroidCreateSymbols AndroidDebugSymbolsMode = AndroidCreateSymbols.Public; 63 | #endif 64 | 65 | #if UNITY_6000_0_OR_NEWER 66 | [EnumFlags] 67 | public DebugSymbolFormat DebugSymbolFormat = DebugSymbolFormat.Zip; 68 | #endif 69 | 70 | 71 | } 72 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/UniAndroidSettings.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6c72f158faea407fa75916b042b9d07d 3 | timeCreated: 1592918260 -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/UnityBuildCommand.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Commands.PreBuildCommands 2 | { 3 | using System; 4 | using global::UniGame.UniBuild.Editor.ClientBuild.Interfaces; 5 | using Interfaces; 6 | using UnityEngine; 7 | 8 | 9 | [Serializable] 10 | public abstract class UnityBuildCommand : ScriptableObject,IUnityBuildCommand 11 | { 12 | [SerializeField] 13 | public bool _isActive = true; 14 | 15 | public bool IsActive => _isActive; 16 | 17 | public virtual string Name => this!=null ? name : $"[{GetType().Name}]"; 18 | 19 | public abstract void Execute(IUniBuilderConfiguration configuration); 20 | 21 | public virtual bool Validate(IUniBuilderConfiguration config) => _isActive; 22 | 23 | public virtual void OnValidate() { } 24 | } 25 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/UnityBuildCommand.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e5d291429e8948a282eb3f29648cb478 3 | timeCreated: 1588767519 -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/UnityPreBuildCommand.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Commands.PreBuildCommands { 2 | using System; 3 | using Interfaces; 4 | 5 | [Serializable] 6 | public abstract class UnityPreBuildCommand : 7 | UnityBuildCommand, 8 | IUnityPreBuildCommand 9 | { 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/UnityPreBuildCommand.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 250608a03b381b5478cc7785502a17d6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/UnitySerializablePreBuildCommand.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Commands.PreBuildCommands 2 | { 3 | using System; 4 | using Interfaces; 5 | 6 | [Serializable] 7 | public abstract class UnitySerializablePreBuildCommand : SerializableBuildCommand, IUnityPreBuildCommand 8 | { 9 | } 10 | 11 | 12 | [Serializable] 13 | public abstract class UnitySerializablePostBuildCommand :SerializableBuildCommand, IUnityPostBuildCommand 14 | { 15 | } 16 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/UnitySerializablePreBuildCommand.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 95b58bccb34c4578bb1aff46804b47ea 3 | timeCreated: 1597943320 -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/UpdateAndroidKeyStoreCommand.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d408d06bfbed7374983851dbd6da71ea 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/UpdateVersionCommand.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4fb4c13b188b7f84c840fc6eca6d3795 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/UpdateVersionCommand/BuildVersionProvider.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.UpdateVersionCommand 2 | { 3 | using System.Text; 4 | using UnityEditor; 5 | 6 | public class BuildVersionProvider 7 | { 8 | 9 | public string GetBuildVersion(BuildTarget buildTarget,string bundleVersion, int buildNumber, string branch = null) { 10 | 11 | var versionLenght = GetVersionLength(buildTarget); 12 | var versionPoints = bundleVersion.Split('.'); 13 | 14 | var versionBuilder = new StringBuilder(); 15 | 16 | for (var i = 0; i < versionLenght; i++) { 17 | versionBuilder.Append(versionPoints.Length > i ? versionPoints[i] : "0"); 18 | versionBuilder.Append("."); 19 | } 20 | 21 | versionBuilder.Append(buildNumber); 22 | 23 | if (buildTarget != BuildTarget.Android || string.IsNullOrEmpty(branch)) 24 | return versionBuilder.ToString(); 25 | 26 | var shortBranch = GetShortBranch(branch); 27 | if (string.IsNullOrEmpty(shortBranch)) 28 | return versionBuilder.ToString(); 29 | versionBuilder.Append(" "); 30 | versionBuilder.Append(shortBranch); 31 | 32 | return versionBuilder.ToString(); 33 | 34 | } 35 | 36 | public int GetActiveBuildNumber(BuildTarget target) { 37 | 38 | var activeVersion = 0; 39 | 40 | switch (target) { 41 | case BuildTarget.Android: 42 | activeVersion = PlayerSettings.Android.bundleVersionCode; 43 | break; 44 | case BuildTarget.iOS: 45 | if(int.TryParse(PlayerSettings.iOS.buildNumber, out var iosBuildNumber)) 46 | activeVersion = iosBuildNumber; 47 | break; 48 | default: 49 | var versionPoints = GetVersionsFromString(PlayerSettings.bundleVersion); 50 | activeVersion = versionPoints[^1]; 51 | break; 52 | } 53 | 54 | return activeVersion; 55 | 56 | } 57 | 58 | public int[] GetVersionsFromString(string version) 59 | { 60 | if (string.IsNullOrEmpty(version)) 61 | return new[] { 0, 0, 0, 0 }; 62 | 63 | var versionPoints = version.Split('.'); 64 | var versions = new int[4]; 65 | for (var i = 0; i < versionPoints.Length; i++) 66 | { 67 | var versionPoint = versionPoints[i]; 68 | if (int.TryParse(versionPoint, out var versionValue)) 69 | versions[i] = versionValue; 70 | } 71 | 72 | if (int.TryParse(version, out var singleVersion)) 73 | versions[0] = singleVersion; 74 | 75 | return versions; 76 | } 77 | 78 | public int GetVersionLength(BuildTarget buildTarget) { 79 | var length = buildTarget == BuildTarget.iOS ? 2 : 3; 80 | return length; 81 | } 82 | 83 | private static string GetShortBranch(string branch) { 84 | if (branch == "master") { 85 | return string.Empty; 86 | } 87 | if (branch == "develop") { 88 | return "develop"; 89 | } 90 | 91 | if (branch.StartsWith("feature/")) { 92 | return branch.Substring("feature/".Length); 93 | } 94 | 95 | return branch; 96 | } 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/UpdateVersionCommand/BuildVersionProvider.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bd86eacb50c0cab41abddd67db29ccce 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/UpdateVersionCommand/UpdateVersionCommand.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | 3 | namespace UniModules.UniGame.UniBuild.Editor.UpdateVersionCommand 4 | { 5 | using System; 6 | using System.Text; 7 | using GitTools.Runtime; 8 | using global::UniGame.UniBuild.Editor.ClientBuild.Interfaces; 9 | using ClientBuild.Commands.PreBuildCommands; 10 | using UnityEditor; 11 | using UnityEngine; 12 | 13 | #if ODIN_INSPECTOR 14 | using Sirenix.OdinInspector; 15 | #endif 16 | 17 | #if TRI_INSPECTOR 18 | using TriInspector; 19 | #endif 20 | 21 | /// 22 | /// update current project version 23 | /// 24 | [Serializable] 25 | public class UpdateVersionCommand : UnitySerializablePreBuildCommand 26 | { 27 | [SerializeField] 28 | private int minBuildNumber = 0; 29 | 30 | [SerializeField] 31 | private bool appendBranch = false; 32 | 33 | public bool printBuildVersion = true; 34 | 35 | #if ODIN_INSPECTOR || TRI_INSPECTOR 36 | [ShowIf(nameof(printBuildVersion))] 37 | #endif 38 | public string versionLocation = "Builds/version.txt"; 39 | 40 | public override void Execute(IUniBuilderConfiguration configuration) 41 | { 42 | var buildParameters = configuration.BuildParameters; 43 | var branch = appendBranch ? configuration.BuildParameters.branch : null; 44 | UpdateBuildVersion(buildParameters.buildTarget, buildParameters.buildNumber, branch); 45 | } 46 | 47 | #if ODIN_INSPECTOR || TRI_INSPECTOR 48 | [Button] 49 | #endif 50 | public void Execute() 51 | { 52 | var branch = appendBranch ? GitCommands.GetGitBranch() : string.Empty; 53 | UpdateBuildVersion(EditorUserBuildSettings.activeBuildTarget, 1, branch); 54 | if(printBuildVersion) PrintBuildVersion(); 55 | } 56 | 57 | public void PrintBuildVersion() 58 | { 59 | try 60 | { 61 | var targetPath = FileUtils.ProjectPath.CombinePath(versionLocation); 62 | Debug.Log("version saved to " + targetPath); 63 | File.WriteAllText(targetPath,PlayerSettings.bundleVersion); 64 | } 65 | catch (Exception e) 66 | { 67 | Debug.LogError(e); 68 | } 69 | 70 | } 71 | 72 | public void UpdateBuildVersion(BuildTarget buildTarget,int buildNumber, string branch) 73 | { 74 | var buildVersionProvider = new BuildVersionProvider(); 75 | var logBuilder = new StringBuilder(200); 76 | 77 | var currentBuildNumber = buildVersionProvider.GetActiveBuildNumber(buildTarget); 78 | var activeBuildNumber = Mathf.Max(buildNumber, minBuildNumber); 79 | activeBuildNumber = Mathf.Max(1, activeBuildNumber); 80 | var resultBuildNumber = currentBuildNumber + activeBuildNumber; 81 | 82 | var bundleVersion = buildVersionProvider 83 | .GetBuildVersion(buildTarget, PlayerSettings.bundleVersion, resultBuildNumber, branch); 84 | 85 | PlayerSettings.bundleVersion = bundleVersion; 86 | var buildNumberString = resultBuildNumber.ToString(); 87 | PlayerSettings.iOS.buildNumber = buildNumberString; 88 | PlayerSettings.Android.bundleVersionCode = resultBuildNumber; 89 | 90 | logBuilder.Append("\tUNIBUILD: Parameters build number : "); 91 | logBuilder.Append(buildNumber); 92 | logBuilder.AppendLine(); 93 | 94 | logBuilder.Append("\tUNIBUILD: ResultBuildNumber build number : "); 95 | logBuilder.Append(resultBuildNumber); 96 | logBuilder.AppendLine(); 97 | 98 | logBuilder.Append("\tUNIBUILD: PlayerSettings.bundleVersion : "); 99 | logBuilder.Append(bundleVersion); 100 | logBuilder.AppendLine(); 101 | 102 | logBuilder.Append("\tUNIBUILD: PlayerSettings.iOS.buildNumber : "); 103 | logBuilder.Append(buildNumberString); 104 | logBuilder.AppendLine(); 105 | 106 | logBuilder.Append("\tUNIBUILD: PlayerSettings.Android.bundleVersionCode : "); 107 | logBuilder.Append(resultBuildNumber); 108 | logBuilder.AppendLine(); 109 | 110 | Debug.Log(logBuilder); 111 | } 112 | } 113 | 114 | } 115 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/PreBuildCommands/UpdateVersionCommand/UpdateVersionCommand.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 63b58712fccdaba4ea7a0de66a177ecf 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/ScriptableCommandsGroup.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild 2 | { 3 | using System.Collections.Generic; 4 | using Editor.ClientBuild; 5 | using Editor.ClientBuild.Commands.PreBuildCommands; 6 | using Editor.ClientBuild.Interfaces; 7 | using global::UniGame.UniBuild.Editor.ClientBuild.Interfaces; 8 | using UnityEngine; 9 | 10 | #if ODIN_INSPECTOR 11 | using Sirenix.OdinInspector; 12 | #endif 13 | 14 | #if TRI_INSPECTOR 15 | using TriInspector; 16 | #endif 17 | 18 | [CreateAssetMenu(menuName = "UniBuild/ScriptableCommandsGroup",fileName = nameof(ScriptableCommandsGroup))] 19 | public class ScriptableCommandsGroup : UnityBuildCommand, IUnityPreBuildCommand,IUnityPostBuildCommand 20 | { 21 | /// 22 | /// you can set build arguments with inspector 23 | /// 24 | #if ODIN_INSPECTOR || TRI_INSPECTOR 25 | [InlineProperty] 26 | [HideLabel] 27 | [Title(nameof(arguments))] 28 | #endif 29 | #if ODIN_INSPECTOR 30 | [FoldoutGroup(nameof(arguments),expanded:false)] 31 | #endif 32 | [Space] 33 | public ApplyBuildArgumentsCommand arguments = new ApplyBuildArgumentsCommand(); 34 | 35 | #if ODIN_INSPECTOR || TRI_INSPECTOR 36 | [InlineProperty] 37 | [HideLabel] 38 | #endif 39 | [Space] 40 | public BuildCommands commands = new BuildCommands(); 41 | 42 | #if ODIN_INSPECTOR || TRI_INSPECTOR 43 | [Button] 44 | #endif 45 | public void ExecuteGroup() 46 | { 47 | commands.Commands.ExecuteCommands(); 48 | } 49 | 50 | public IEnumerable GetCommands() where TValue : IUnityBuildCommand 51 | { 52 | foreach (var command in commands.Commands) 53 | { 54 | if (command is TValue value) 55 | yield return value; 56 | } 57 | } 58 | 59 | public override void Execute(IUniBuilderConfiguration configuration) 60 | { 61 | var groupName = Name; 62 | 63 | arguments.Execute(configuration); 64 | 65 | var message = $"Execute Group {groupName}"; 66 | var id = BuildLogger.LogWithTimeTrack(message); 67 | ExecuteCommands(configuration); 68 | BuildLogger.Log($"Execute Group {groupName} FINISHED",id); 69 | } 70 | 71 | private void ExecuteCommands(IUniBuilderConfiguration configuration) 72 | { 73 | foreach (var buildCommand in commands.Commands) 74 | { 75 | if(!buildCommand.IsActive) continue; 76 | 77 | var id = buildCommand.Name; 78 | 79 | var message = $"\tExecute COMMAND {id}"; 80 | 81 | var logId = BuildLogger.LogWithTimeTrack(message); 82 | buildCommand.Execute(configuration); 83 | 84 | BuildLogger.Log($"\tExecute COMMAND {buildCommand.Name} FINISHED",logId); 85 | } 86 | } 87 | } 88 | 89 | 90 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/ScriptableCommandsGroup.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8eeaf8ddc8f4f8a40a5135cf64ebf905 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/SetApplicationIdCommand.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UniGame.UniBuild.Editor.ClientBuild.Interfaces; 3 | using UniModules.UniGame.UniBuild.Editor.ClientBuild.Commands.PreBuildCommands; 4 | 5 | namespace Game.Modules.UniModules.UniGame.UniBuild.Editor.ClientBuild.Commands 6 | { 7 | using Sirenix.OdinInspector; 8 | using UnityEditor; 9 | 10 | 11 | #if ODIN_INSPECTOR 12 | using Sirenix.OdinInspector; 13 | #endif 14 | 15 | #if TRI_INSPECTOR 16 | using TriInspector; 17 | #endif 18 | 19 | [Serializable] 20 | public class SetApplicationIdCommand : UnityBuildCommand 21 | { 22 | public string applicationId = "com.company.product"; 23 | 24 | public override void Execute(IUniBuilderConfiguration configuration) 25 | { 26 | Execute(); 27 | } 28 | 29 | #if ODIN_INSPECTOR || TRI_INSPECTOR 30 | [Button] 31 | #endif 32 | public void Execute() 33 | { 34 | PlayerSettings.applicationIdentifier = applicationId; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/SetApplicationIdCommand.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0baa8607dd9145c4799e6e4e4c86ebf9 -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/SharedCommands.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using UniModules.UniGame.UniBuild.Editor.ClientBuild.BuildConfiguration; 4 | using UniModules.UniGame.UniBuild.Editor.ClientBuild.Commands.PreBuildCommands; 5 | using UniModules.UniGame.UniBuild.Editor.ClientBuild.Interfaces; 6 | using UnityEngine; 7 | 8 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Commands 9 | { 10 | using global::UniGame.UniBuild.Editor.ClientBuild.Interfaces; 11 | 12 | [Serializable] 13 | public class SharedCommands : UnityBuildCommand 14 | { 15 | 16 | public List commands = new List(); 17 | 18 | public override void Execute(IUniBuilderConfiguration configuration) 19 | { 20 | foreach (var command in commands) 21 | { 22 | foreach (var buildCommand in command.GetCommands()) 23 | { 24 | if (!buildCommand.IsActive) 25 | { 26 | continue; 27 | } 28 | buildCommand.Execute(configuration); 29 | } 30 | } 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Commands/SharedCommands.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ce6b8275fe55b43468ba9c5e80ec4d54 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/ExecutionOrderType.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild { 2 | public enum ExecutionOrderType : byte 3 | { 4 | PreBuildProcess, 5 | ProstBuildProcess, 6 | } 7 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/ExecutionOrderType.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 625603fdd6e64143bce872b6ca6fa598 3 | timeCreated: 1555079812 -------------------------------------------------------------------------------- /Editor/ClientBuild/Extensions.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4abdb23666b42ab43aedaff0a0f37997 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Extensions/ArgumentsProviderExtension.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Extensions 2 | { 3 | using System.Linq; 4 | using global::UniGame.UniBuild.Editor.ClientBuild; 5 | using global::UniGame.UniBuild.Editor.ClientBuild.Interfaces; 6 | using Interfaces; 7 | using Parsers; 8 | using UnityEditor; 9 | 10 | public static class ArgumentsProviderExtension 11 | { 12 | private static EnumArgumentParser buildTargetParser = new EnumArgumentParser(); 13 | private static EnumArgumentParser buildTargetGroupParser = new EnumArgumentParser(); 14 | 15 | public static BuildTarget GetBuildTarget(this IArgumentsProvider arguments) 16 | { 17 | if (arguments.GetEnumValue(BuildArguments.BuildTargetKey, 18 | out var buildTargetValue)) 19 | return buildTargetValue; 20 | 21 | var targets = buildTargetParser.Parse(arguments); 22 | return targets.Count > 0 ? 23 | targets.FirstOrDefault() : 24 | EditorUserBuildSettings.activeBuildTarget; 25 | } 26 | 27 | public static BuildTargetGroup GetBuildTargetGroup( this IArgumentsProvider arguments) 28 | { 29 | if (arguments.GetEnumValue(BuildArguments.BuildTargetGroupKey, 30 | out var buildTargetValue)) 31 | return buildTargetValue; 32 | 33 | var groups = buildTargetGroupParser.Parse(arguments); 34 | return groups.Count > 0 ? groups.First() : 35 | EditorUserBuildSettings.selectedBuildTargetGroup; 36 | } 37 | 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Extensions/ArgumentsProviderExtension.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f15e486a151f26a4cb2b5b6b70b746a2 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Extensions/UnityBuildExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Extensions 2 | { 3 | using System.Text; 4 | using UnityEditor.Build.Reporting; 5 | 6 | public static class UnityBuildExtensions 7 | { 8 | 9 | private static StringBuilder stringBuilder = new StringBuilder(1000); 10 | 11 | public static string ReportMessage(this BuildReport report) { 12 | 13 | return BuildReportLogger.GetBuildReport(report); 14 | 15 | } 16 | 17 | public static string GetSummaryMessage(this BuildReport report) { 18 | 19 | BuildReportLogger.AppendSummary(report,stringBuilder); 20 | var message = stringBuilder.ToString(); 21 | stringBuilder.Clear(); 22 | return message; 23 | 24 | } 25 | 26 | public static string GetStepsMessage(this BuildReport report) 27 | { 28 | 29 | BuildReportLogger.AppendBuildSteps(report, stringBuilder); 30 | var message = stringBuilder.ToString(); 31 | stringBuilder.Clear(); 32 | return message; 33 | 34 | } 35 | 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Extensions/UnityBuildExtensions.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d95a21db0c0a6d849bf1d2e7807388ef 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Generator.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a934239359c186a4ca09b2eb10af71ff 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Generator/BuildConfigurationBuilder.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Generator 3 | { 4 | using UniModules.Editor; 5 | using CodeWriter.Editor.UnityTools; 6 | using UnityEditor; 7 | 8 | public class BuildConfigurationBuilder 9 | { 10 | private static string _cloudLocalPath = "UniBuild/Editor/" + CloudBuildMethodsGenerator.ClassFileName; 11 | private static string _cloudPath = FileUtils.Combine(EditorPathConstants.GeneratedContentPath,_cloudLocalPath); 12 | 13 | private static string _menuScript = string.Empty; 14 | private static string _cloudScript = string.Empty; 15 | 16 | public static string BuildPath => FileUtils.Combine(EditorPathConstants.GeneratedContentPath,"UniBuild/Editor/BuildMethods.cs"); 17 | 18 | [MenuItem("UniGame/Uni Build/Rebuild Menu")] 19 | public static void RebuildMenuAction() 20 | { 21 | Rebuild(true); 22 | } 23 | 24 | public static void Rebuild(bool forceUpdate = false) 25 | { 26 | RebuildMenu(forceUpdate); 27 | RebuildCloudMethods(forceUpdate); 28 | } 29 | 30 | public static bool RebuildMenu(bool force = false) 31 | { 32 | #if UNITY_CLOUD_BUILD 33 | return false; 34 | #endif 35 | var generator = new BuildMenuGenerator(); 36 | var script = generator.CreateBuilderScriptBody(); 37 | var result = script.CreateScript(BuildPath,force); 38 | 39 | return result; 40 | } 41 | 42 | public static bool RebuildCloudMethods(bool force = false) 43 | { 44 | #if UNITY_CLOUD_BUILD 45 | return false; 46 | #endif 47 | var cloudGenerator = new CloudBuildMethodsGenerator(); 48 | var content = cloudGenerator.CreateCloudBuildMethods(); 49 | var result = content.WriteUnityFile(_cloudPath,force); 50 | return result; 51 | } 52 | } 53 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/Generator/BuildConfigurationBuilder.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 45ba8e69f2074d0185ff0ddce3a67971 3 | timeCreated: 1591999838 -------------------------------------------------------------------------------- /Editor/ClientBuild/Generator/BuildMenuGenerator.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Generator 2 | { 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using BuildConfiguration; 6 | using UniModules.Editor; 7 | using global::UniGame.Core.Runtime.Extension; 8 | using global::CodeWriter.Editor.UnityTools; 9 | using UnityEditor; 10 | 11 | public class BuildMenuGenerator 12 | { 13 | private readonly BuildConfigurationBuilder buildConfigurationBuilder; 14 | private const string _menuTemplate = "[MenuItem(\"UniGame/Uni Build/{0}_Build\")]\n"; 15 | private const string _menuAndRunTemplate = "[MenuItem(\"UniGame/Uni Build/{0}_Build_And_Run\")]\n"; 16 | private const string _buildTemplate = " Build_{0}"; 17 | private const string _buildAndRunTemplate = " BuildAndRun_{0}"; 18 | 19 | public ScriptData CreateBuilderScriptBody() 20 | { 21 | var scriptData = new ScriptData() { 22 | Namespace = "namespace UniGame.UniBuild", 23 | Name = "UniPlatformBuilder", 24 | Usings = new List() { 25 | typeof(MenuItem).Namespace, 26 | typeof(UniBuildTool).Namespace 27 | }, 28 | Methods = GetBuildMethods().ToList() 29 | }; 30 | 31 | return scriptData; 32 | } 33 | 34 | public string[] GetBuildMethods() 35 | { 36 | var map = new List(); 37 | var commands = AssetEditorTools.GetAssets(); 38 | foreach (var command in commands) { 39 | map.Add(CreateBuildMethod(_menuTemplate,_buildTemplate,nameof(UniBuildTool.BuildByConfigurationId),command)); 40 | } 41 | foreach (var command in commands) { 42 | map.Add(CreateBuildMethod(_menuAndRunTemplate,_buildAndRunTemplate,nameof(UniBuildTool.BuildAndRunByConfigurationId),command)); 43 | } 44 | return map.ToArray(); 45 | } 46 | 47 | public string CreateBuildMethod(string template,string menuTemplate,string buildMethod,UniBuildCommandsMap config) 48 | { 49 | var name = config.ItemName.RemoveSpecialAndDotsCharacters(); 50 | var id = config.GetGUID(); 51 | var menuMethodName = string.Format(menuTemplate,name); 52 | var method = $"{string.Format(template,name)} public static void {menuMethodName}() => UniBuildTool.{buildMethod}(\"{id}\");"; 53 | return method; 54 | } 55 | } 56 | 57 | } 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Generator/BuildMenuGenerator.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f7bee28739145be498509c1d0420fd13 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Generator/CloudBuildMethodsGenerator.cs: -------------------------------------------------------------------------------- 1 | using System.Text.RegularExpressions; 2 | using UniGame; 3 | 4 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Generator 5 | { 6 | using BuildConfiguration; 7 | using UniModules.Editor; 8 | using global::UniGame.Core.Runtime.Extension; 9 | using UnityEngine; 10 | 11 | public class CloudBuildMethodsGenerator 12 | { 13 | private const string PreExportRegExpText = @"\/\/=====ExportMethods=====(?[\w|\W|\s|\S]*)\/\/=====ExportMethodsEnd====="; 14 | 15 | private static Regex exportMethodsRegEx = new Regex(PreExportRegExpText,RegexOptions.Compiled | RegexOptions.IgnoreCase); 16 | 17 | public const string MethodsKey = "//%CLOUD-METHODS%"; 18 | public const string BuildConfigKey = "CONFIG_NAME"; 19 | public const string ConfigGUIDKey = "%BUILDMAP-GUID%"; 20 | public const string ClassNameTemplate = nameof(CloudBuildHelper); 21 | public const string ClassFileName = ClassName + ".cs"; 22 | public const string ClassName = "CloudBuildCiMethods"; 23 | 24 | private static string _classTemplate; 25 | private static TextAsset _methodsTemplate; 26 | 27 | public static string ClassTemplate => (_classTemplate = string.IsNullOrEmpty(_classTemplate) ? 28 | typeof(CloudBuildHelper).GetScriptAsset()?.text : 29 | _classTemplate); 30 | 31 | public string LoadMethodsTemplate() 32 | { 33 | var classTextAsset = ClassTemplate; 34 | 35 | if (string.IsNullOrEmpty(classTextAsset)) { 36 | Debug.LogWarning($"CreateCloudBuildClass: ERROR CLASS {ClassTemplate} NULL value"); 37 | return string.Empty; 38 | } 39 | 40 | if(!exportMethodsRegEx.IsMatch(classTextAsset)) 41 | { 42 | Debug.LogWarning($"exportMethodsRegEx: ERROR Methods {ClassTemplate} Missings"); 43 | return string.Empty; 44 | } 45 | 46 | var exportMethodsMatch = exportMethodsRegEx.Match(classTextAsset); 47 | var exportMethods = exportMethodsMatch.Value; 48 | 49 | if (string.IsNullOrEmpty(exportMethods)) { 50 | Debug.LogWarning($"CreateCloudBuildMethods: ERROR METHODS EMPTY NULL value"); 51 | return string.Empty; 52 | } 53 | 54 | return exportMethods; 55 | } 56 | 57 | public string CreateCloudBuildMethods() 58 | { 59 | var methodsTextAsset = LoadMethodsTemplate(); 60 | 61 | var commands = AssetEditorTools.GetAssets(); 62 | 63 | var methodsValue = string.Empty; 64 | 65 | foreach (var command in commands) { 66 | var guid = AssetEditorTools.GetGUID(command); 67 | var methodValue = methodsTextAsset.Replace(ConfigGUIDKey, guid); 68 | var methodName = command.name.RemoveSpecialAndDotsCharacters(); 69 | methodsValue += methodValue.Replace(BuildConfigKey, methodName); 70 | } 71 | 72 | var classTextAsset = ClassTemplate.Replace(ClassNameTemplate, ClassName); 73 | 74 | return classTextAsset.Replace(MethodsKey,methodsValue); 75 | } 76 | 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Generator/CloudBuildMethodsGenerator.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 68a8df81e86427e4b902cdff2469b510 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Interfaces.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b18a43568d1a72741b3ce0343634e925 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Interfaces/IArgumentsProvider.cs: -------------------------------------------------------------------------------- 1 | namespace UniGame.UniBuild.Editor.ClientBuild.Interfaces { 2 | using System; 3 | using System.Collections.Generic; 4 | 5 | public interface IArgumentsProvider 6 | { 7 | List SourceArguments { get; } 8 | string EvaluateValue(string expression); 9 | IReadOnlyDictionary Arguments { get; } 10 | public void SetArgument(string key, string value); 11 | string SetValue(string key, string value); 12 | bool GetIntValue(string name, out int result, int defaultValue = 0); 13 | bool GetBoolValue(string name, out bool result, bool defaultValue = false); 14 | bool Contains(string name); 15 | bool GetEnumValue(string parameterName,out TEnum result) where TEnum : struct; 16 | bool GetEnumValue(string parameterName,Type enumType, out TEnum result) where TEnum : struct; 17 | bool GetStringValue(string name, out string result,string defaultValue = ""); 18 | } 19 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/Interfaces/IArgumentsProvider.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 080474900c064904a1290ba8b01a9804 3 | timeCreated: 1555079925 -------------------------------------------------------------------------------- /Editor/ClientBuild/Interfaces/IBuildParameters.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Interfaces { 2 | using System.Collections.Generic; 3 | using UnityEditor; 4 | 5 | public interface IBuildParameters { 6 | 7 | BuildTarget BuildTarget { get; } 8 | 9 | BuildTargetGroup BuildTargetGroup { get; } 10 | 11 | int BuildNumber { get; set; } 12 | string OutputFile { get; set; } 13 | string OutputFolder { get; set; } 14 | 15 | string ArtifactPath { get; set; } 16 | 17 | BuildOptions BuildOptions { get; } 18 | 19 | string ProjectId { get; } 20 | string BundleId { get; } 21 | 22 | BuildEnvironmentType EnvironmentType { get; } 23 | 24 | string Branch { get;set; } 25 | 26 | /// 27 | /// Player Build scenes 28 | /// 29 | IReadOnlyList Scenes { get; } 30 | 31 | void SetBuildOptions(BuildOptions targetBuildOptions, bool replace = true); 32 | } 33 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/Interfaces/IBuildParameters.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 18ecc5e9acc84abaa86a33a26ea070a0 3 | timeCreated: 1555081089 -------------------------------------------------------------------------------- /Editor/ClientBuild/Interfaces/IUniBuilderConfiguration.cs: -------------------------------------------------------------------------------- 1 | namespace UniGame.UniBuild.Editor.ClientBuild.Interfaces 2 | { 3 | using UniModules.UniGame.UniBuild.Editor.ClientBuild; 4 | using UnityEditor.Build.Reporting; 5 | 6 | public interface IUniBuilderConfiguration 7 | { 8 | /// 9 | /// Allow to use local argument data between build steps 10 | /// 11 | IArgumentsProvider Arguments { get; } 12 | /// 13 | /// Current Unity build parameters 14 | /// 15 | BuildParameters BuildParameters { get; } 16 | /// 17 | /// Build report data, use only after build process 18 | /// 19 | BuildReport BuildReport { get; set; } 20 | } 21 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/Interfaces/IUniBuilderConfiguration.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f34a097f230e4a60a858e1dd96ee6708 3 | timeCreated: 1557998159 -------------------------------------------------------------------------------- /Editor/ClientBuild/Interfaces/IUnityBuildCommand.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Interfaces 2 | { 3 | using global::UniGame.UniBuild.Editor.ClientBuild.Interfaces; 4 | 5 | public interface IUnityBuildCommand : IUnityBuildCommandValidator, IUnityBuildCommandInfo 6 | { 7 | void Execute(IUniBuilderConfiguration configuration); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Interfaces/IUnityBuildCommand.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 125aae3046bc5cc4d9ee9968d82138bf 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Interfaces/IUnityBuildCommandInfo.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Interfaces 2 | { 3 | public interface IUnityBuildCommandInfo { 4 | 5 | bool IsActive { get; } 6 | 7 | string Name { get; } 8 | } 9 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/Interfaces/IUnityBuildCommandInfo.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4994cb8260e541519abbc0a9143ebcac 3 | timeCreated: 1555079905 -------------------------------------------------------------------------------- /Editor/ClientBuild/Interfaces/IUnityBuildCommandValidator.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Interfaces 2 | { 3 | using global::UniGame.UniBuild.Editor.ClientBuild.Interfaces; 4 | 5 | public interface IUnityBuildCommandValidator 6 | { 7 | bool Validate(IUniBuilderConfiguration config); 8 | } 9 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/Interfaces/IUnityBuildCommandValidator.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f72f17fa0dd44ecd8cff9e8871e01222 3 | timeCreated: 1587141085 -------------------------------------------------------------------------------- /Editor/ClientBuild/Interfaces/IUnityPlayerBuilder.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Interfaces 2 | { 3 | using global::UniGame.UniBuild.Editor.ClientBuild.Interfaces; 4 | using UnityEditor.Build.Reporting; 5 | 6 | public interface IUnityPlayerBuilder 7 | { 8 | BuildReport Build(IUniBuilderConfiguration configuration); 9 | } 10 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/Interfaces/IUnityPlayerBuilder.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b719f598ce894d90b95f2f20d946d698 3 | timeCreated: 1558009547 -------------------------------------------------------------------------------- /Editor/ClientBuild/Interfaces/IUnityPostBuildCommand.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Interfaces { 2 | public interface IUnityPostBuildCommand : IUnityBuildCommand 3 | { 4 | 5 | } 6 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/Interfaces/IUnityPostBuildCommand.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4f5a60c0bb724037bb0317c3583fdcca 3 | timeCreated: 1555082205 -------------------------------------------------------------------------------- /Editor/ClientBuild/Interfaces/IUnityPreBuildCommand.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Interfaces { 2 | public interface IUnityPreBuildCommand : IUnityBuildCommand 3 | { 4 | 5 | } 6 | } -------------------------------------------------------------------------------- /Editor/ClientBuild/Interfaces/IUnityPreBuildCommand.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0ff4fb9509b240bd99acc5496b206f96 3 | timeCreated: 1555082269 -------------------------------------------------------------------------------- /Editor/ClientBuild/Parsers.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d54b37d98c01615428efa08d8f60117e 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Parsers/EnumArgumentParser.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Parsers 2 | { 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using global::UniGame.UniBuild.Editor.ClientBuild.Interfaces; 7 | using Interfaces; 8 | 9 | public class EnumArgumentParser 10 | where TValue : struct 11 | { 12 | private static List buildOptionsNames = Enum.GetNames(typeof(TValue)). 13 | Select(x => x.Insert(0, "-").ToLower()). 14 | ToList(); 15 | 16 | private static List buildOptionsValues = Enum.GetValues(typeof(TValue)). 17 | OfType(). 18 | ToList(); 19 | 20 | public List Parse(IArgumentsProvider arguments) 21 | { 22 | var result = new List(); 23 | 24 | for (var i = 0; i < buildOptionsValues.Count; i++) { 25 | var optionName = buildOptionsNames[i]; 26 | if (arguments.Contains(optionName)) 27 | { 28 | result.Add(buildOptionsValues[i]); 29 | } 30 | } 31 | 32 | return result; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Parsers/EnumArgumentParser.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 52b7ede4094aaec42b881c40be4a5f01 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Processors.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bacf5f2708e294c47a2aa8055302f16f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Processors/BuildConfigurationsPostProcessor.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Linq; 3 | using UniModules.Editor; 4 | using UniModules.UniGame.UniBuild.Editor.ClientBuild.BuildConfiguration; 5 | 6 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild.Processors 7 | { 8 | using Core.Editor.Tools; 9 | using Generator; 10 | using UnityEditor; 11 | 12 | public class BuildConfigurationsPostProcessor : AssetPostprocessor 13 | { 14 | 15 | private static List commandsMapPaths = new List(); 16 | 17 | static BuildConfigurationsPostProcessor() 18 | { 19 | AssemblyReloadEvents.afterAssemblyReload += () => 20 | { 21 | var assets = AssetEditorTools.GetAssets(); 22 | commandsMapPaths.Clear(); 23 | commandsMapPaths.AddRange(assets.Select(AssetDatabase.GetAssetPath)); 24 | }; 25 | } 26 | 27 | static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) 28 | { 29 | var isChanged = importedAssets.Any(x => commandsMapPaths.Contains(x)); 30 | if (isChanged) 31 | { 32 | UniEditorProfiler.LogTime(nameof(BuildConfigurationsPostProcessor), () => BuildConfigurationBuilder.Rebuild()); 33 | } 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Editor/ClientBuild/Processors/BuildConfigurationsPostProcessor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4253df5f28c22d64a9f75041ac82f6af 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/UniBuildReportBuilder.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ad6cd0a6a9084eeeae5b37b7f9ca90d3 3 | timeCreated: 1723523446 -------------------------------------------------------------------------------- /Editor/ClientBuild/UniBuildTool.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Linq; 3 | using UnityEngine; 4 | 5 | namespace UniModules.UniGame.UniBuild.Editor.ClientBuild 6 | { 7 | using System; 8 | using Abstract; 9 | using BuildConfiguration; 10 | using global::UniGame.UniBuild.Editor.ClientBuild; 11 | using global::UniGame.UniBuild.Editor.ClientBuild.BuildConfiguration; 12 | using global::UniGame.UniBuild.Editor.ClientBuild.Interfaces; 13 | using Interfaces; 14 | using UnityEditor; 15 | using UnityEditor.Build.Reporting; 16 | using Object = UnityEngine.Object; 17 | 18 | public static class UniBuildTool 19 | { 20 | 21 | public const string BuildFolder = "Build"; 22 | 23 | private static UnityPlayerBuilder builder = new UnityPlayerBuilder(); 24 | 25 | public static EditorBuildConfiguration CreateConfiguration(UniBuildConfigurationData buildData) 26 | { 27 | var commandLineParameters = Environment.GetCommandLineArgs().ToList(); 28 | commandLineParameters.Add( $"{BuildArguments.BuildOutputFolderKey}:Builds"); 29 | commandLineParameters.Add( $"{BuildArguments.BuildOutputNameKey}:{buildData.artifactName}"); 30 | 31 | var argumentsProvider = new ArgumentsProvider(commandLineParameters.ToArray()); 32 | var buildParameters = new BuildParameters(buildData, argumentsProvider); 33 | var buildConfiguration = new EditorBuildConfiguration(argumentsProvider, buildParameters); 34 | 35 | Debug.LogFormat("\nUNIBUILD [CreateConfiguration] {0} \n", argumentsProvider); 36 | 37 | return buildConfiguration; 38 | } 39 | 40 | 41 | public static void BuildByConfigurationId(string guid) 42 | { 43 | var assetPath = AssetDatabase.GUIDToAssetPath(guid); 44 | var asset = AssetDatabase.LoadAssetAtPath(assetPath); 45 | UniBuildTool.ExecuteBuild(asset); 46 | } 47 | 48 | public static void BuildAndRunByConfigurationId(string guid) 49 | { 50 | var assetPath = AssetDatabase.GUIDToAssetPath(guid); 51 | var asset = AssetDatabase.LoadAssetAtPath(assetPath); 52 | var instance = Object.Instantiate(asset); 53 | instance.BuildData.buildOptions |= BuildOptions.AutoRunPlayer; 54 | UniBuildTool.ExecuteBuild(instance); 55 | } 56 | 57 | public static BuildReport ExecuteBuild(IUniBuildCommandsMap commandsMap) 58 | { 59 | var buildData = commandsMap.BuildData; 60 | var configuration = CreateConfiguration(buildData); 61 | return BuildPlayer(configuration,commandsMap); 62 | } 63 | 64 | public static void ExecuteCommands(this IEnumerable commands, UniBuildConfigurationData buildData = null) 65 | { 66 | buildData ??= new UniBuildConfigurationData() 67 | { 68 | buildTarget = EditorUserBuildSettings.activeBuildTarget, 69 | buildTargetGroup = EditorUserBuildSettings.selectedBuildTargetGroup, 70 | artifactName = "Empty" 71 | }; 72 | var configuration = CreateConfiguration(buildData); 73 | builder.ExecuteCommands(commands,configuration); 74 | } 75 | 76 | /// 77 | /// Console build call. Close editor after end of build process 78 | /// 79 | public static void BuildUnityPlayer() 80 | { 81 | var configuration = new UniBuilderConsoleConfiguration(Environment.GetCommandLineArgs()); 82 | 83 | var report = BuildPlayer(configuration); 84 | 85 | EditorApplication.Exit(report.summary.result == BuildResult.Succeeded ? 0 : 1); 86 | } 87 | 88 | public static BuildReport BuildPlayer(IUniBuilderConfiguration configuration) 89 | { 90 | var report = builder.Build(configuration); 91 | return report; 92 | } 93 | 94 | public static BuildReport BuildPlayer(IUniBuilderConfiguration configuration, IUniBuildCommandsMap commandsMap) 95 | { 96 | var report = builder.Build(configuration,commandsMap); 97 | return report; 98 | } 99 | 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /Editor/ClientBuild/UniBuildTool.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 304b1f5ebe8205443ab5a180690b150d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/ClientBuild/UnityPlayerBuilder.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cfecb9d7e3fe6e14bba1f32b00132f6f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Resources.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 49682aac079a2b14081cab2dbb2288a5 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/Resources/CloudBuildMethodsTemplateAsset.txt: -------------------------------------------------------------------------------- 1 | 2 | #if UNITY_CLOUD_BUILD 3 | public static void PreExport%CONFIG_NAME%(UnityEngine.CloudBuild.BuildManifestObject manifest) { 4 | #else 5 | public static void PreExport%CONFIG_NAME%(DummyManifest manifest) 6 | { 7 | #endif 8 | GameLog.Log("UNI BUILD: START PreExport COMMAND"); 9 | 10 | args = new CloudBuildArgs( 11 | manifest.GetValue("buildNumber"), 12 | manifest.GetValue("bundleId"), 13 | manifest.GetValue("projectId"), 14 | manifest.GetValue("scmCommitId"), 15 | manifest.GetValue("scmBranch"), 16 | manifest.GetValue("cloudBuildTargetName") 17 | ); 18 | 19 | GameLog.Log($"UNI BUILD: ARGS\n {args}"); 20 | 21 | var parameters = CreateCommandParameters(); 22 | var artifactPath = UnityCloudPostBuild.OutputFiles.FirstOrDefault(); 23 | if (string.IsNullOrEmpty(artifactPath) == false) 24 | { 25 | parameters.BuildParameters.ArtifactPath = artifactPath; 26 | } 27 | 28 | var builder = new UnityPlayerBuilder(); 29 | 30 | var guid = "%BUILDMAP-GUID%"; 31 | var assetPath = AssetDatabase.GUIDToAssetPath(guid); 32 | var configuration = AssetDatabase.LoadAssetAtPath(assetPath); 33 | builder.ExecuteCommands(configuration.PreBuildCommands,x => x.Execute(parameters)); 34 | } 35 | 36 | public static void PostExport%CONFIG_NAME%(string exportPath) 37 | { 38 | GameLog.Log($"UNI BUILD: START PostExport Path {exportPath} COMMAND"); 39 | 40 | if (string.IsNullOrEmpty(exportPath)) { 41 | Debug.LogError("ExportPath is EMPTY PreExport methods can be skipped"); 42 | } 43 | 44 | if (args == null) { 45 | Debug.LogError("Error: PostExport skipped because args is NULL"); 46 | return; 47 | } 48 | 49 | var parameters = CreateCommandParameters(); 50 | var builder = new UnityPlayerBuilder(); 51 | 52 | var guid = "%BUILDMAP-GUID%"; 53 | var assetPath = AssetDatabase.GUIDToAssetPath(guid); 54 | var configuration = AssetDatabase.LoadAssetAtPath(assetPath); 55 | builder.ExecuteCommands(configuration.PostBuildCommands,x => x.Execute(parameters)); 56 | } 57 | -------------------------------------------------------------------------------- /Editor/Resources/CloudBuildMethodsTemplateAsset.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c539547122c284744a54bc3eb7874de1 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Editor/Resources/CloudBuildTemplateAsset.txt: -------------------------------------------------------------------------------- 1 | //Use UniGame.CloudBuildHelper.[PreExport || PostExport] 2 | namespace UniGame 3 | { 4 | using System; 5 | using System.Collections.Generic; 6 | using System.Linq; 7 | using Newtonsoft.Json; 8 | 9 | using UniCore.Runtime.ProfilerTools; 10 | using UniModules.UniGame.UniBuild.Editor.ClientBuild; 11 | using UniModules.UniGame.UniBuild.Editor.ClientBuild.BuildConfiguration; 12 | using UniModules.UniGame.UniBuild.Editor.ClientBuild.Commands.PostBuildCommands; 13 | using UniModules.UniGame.UniBuild.Editor.ClientBuild.Commands.PreBuildCommands; 14 | using UniModules.UniGame.UniBuild.Editor.ClientBuild.Extensions; 15 | using UniModules.UniGame.UniBuild.Editor.ClientBuild.Interfaces; 16 | using UniModules.UniGame.UniBuild.Editor.UnityCloudBuild; 17 | using UnityEditor; 18 | using UnityEditor.Build; 19 | using UnityEditor.Build.Reporting; 20 | using UnityEngine; 21 | 22 | public class DummyManifest 23 | { 24 | public T GetValue() => default(T); 25 | public T GetValue(string key) => default(T); 26 | } 27 | 28 | //https://docs.unity3d.com/Manual/UnityCloudBuildManifestAsScriptableObject.html 29 | //https://docs.unity3d.com/Manual/UnityCloudBuildManifest.html 30 | public static class CloudBuildHelper 31 | { 32 | private static CloudBuildArgs args; 33 | 34 | %CLOUD-METHODS% 35 | 36 | private static IUniBuilderConfiguration CreateCommandParameters() 37 | { 38 | var argumentsProvider = new ArgumentsProvider(Environment.GetCommandLineArgs()); 39 | 40 | Debug.LogFormat("\n[CloudBuildHelper] {0} \n", argumentsProvider); 41 | Debug.Log(args.ToString()); 42 | 43 | var buildTarget = argumentsProvider.GetBuildTarget(); 44 | var buildTargetGroup = argumentsProvider.GetBuildTargetGroup(); 45 | 46 | var buildParameters = new BuildParameters(buildTarget, buildTargetGroup, argumentsProvider) { 47 | buildNumber = args.BuildNumber, 48 | buildTarget = buildTarget, 49 | projectId = args.ProjectId, 50 | bundleId = args.BundleId, 51 | environmentType = BuildEnvironmentType.UnityCloudBuild, 52 | branch = args.ScmBranch, 53 | }; 54 | 55 | var manifest = LoadBuildManifest(); 56 | if (manifest != null) 57 | { 58 | if (manifest.TryGetValue("buildNumber", out var buildNumberValue) && 59 | Int32.TryParse(buildNumberValue.ToString(), out var buildNumber)) 60 | { 61 | buildParameters.buildNumber = buildNumber; 62 | } 63 | } 64 | 65 | var result = new EditorBuildConfiguration(argumentsProvider, buildParameters); 66 | return result; 67 | } 68 | 69 | private const string ManifestResource = "UnityCloudBuildManifest.json"; 70 | 71 | public static Dictionary LoadBuildManifest() 72 | { 73 | var manifest = (TextAsset) Resources.Load(ManifestResource); 74 | if (manifest != null) 75 | { 76 | var manifestText = manifest.text; 77 | 78 | Debug.Log($"{nameof(LoadBuildManifest)}: MANIFEST \n {manifestText}"); 79 | 80 | var manifestDict = JsonConvert.DeserializeObject>(manifestText) as Dictionary; 81 | foreach (var kvp in manifestDict) 82 | { 83 | // Be sure to check for null values! 84 | var value = (kvp.Value != null) ? kvp.Value.ToString() : ""; 85 | Debug.Log(string.Format("Key: {0}, Value: {1}", kvp.Key, value)); 86 | } 87 | 88 | return manifestDict; 89 | } 90 | else 91 | { 92 | Debug.Log($"{nameof(LoadBuildManifest)}: MANIFEST NOT FOUND"); 93 | } 94 | 95 | return null; 96 | } 97 | } 98 | 99 | 100 | public class UnityCloudPostBuild : IPostprocessBuildWithReport 101 | { 102 | public static List OutputFiles = new List(); 103 | 104 | 105 | public int callbackOrder { get; } = 0; 106 | 107 | public void OnPostprocessBuild(BuildReport report) 108 | { 109 | Debug.Log($"===== UNIBUILD{nameof(UnityCloudPostBuild)} : {report}"); 110 | 111 | var files = report.files.Select(x => x.path).ToList(); 112 | OutputFiles.AddRange(files); 113 | } 114 | } 115 | } -------------------------------------------------------------------------------- /Editor/Resources/CloudBuildTemplateAsset.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8d2f1bdbeeaa38f4f89b192ebf9ac17b 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Editor/UnityCloudBuild.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 745fb12dba3a49b39ef5d6fad28d99eb 3 | timeCreated: 1560615105 -------------------------------------------------------------------------------- /Editor/UnityCloudBuild/CloudBuildArgs.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UniBuild.Editor.UnityCloudBuild 2 | { 3 | using System.Text; 4 | 5 | public class CloudBuildArgs 6 | { 7 | /// 8 | /// The Unity Cloud Build “build number” corresponding to this build. 9 | /// 10 | public int BuildNumber { get; set; } = 0; 11 | 12 | /// 13 | /// The bundleIdentifier configured in Unity Cloud Build (iOS and Android only). 14 | /// 15 | public string BundleId { get; set; } = string.Empty; 16 | 17 | /// 18 | /// The Unity project identifier. 19 | /// 20 | public string ProjectId { get; set; }= string.Empty; 21 | 22 | /// 23 | /// The commit or changelist that was built. 24 | /// 25 | public string ScmCommitId { get; set; }= string.Empty; 26 | 27 | /// 28 | /// The name of the branch that was built. 29 | /// 30 | public string ScmBranch { get; set; }= string.Empty; 31 | 32 | /// 33 | /// The name of the build target that was built (pipeline identifier). 34 | /// 35 | public string CloudBuildTargetName { get; set; }= string.Empty; 36 | 37 | public override string ToString() 38 | { 39 | 40 | var builder = new StringBuilder(200); 41 | 42 | builder.AppendLine(); 43 | builder.AppendLine("=======CloudBuildArgs START========="); 44 | builder.AppendFormat("ProjectId {0}",ProjectId); 45 | builder.AppendLine(); 46 | builder.AppendFormat("BundleId {0}",BundleId); 47 | builder.AppendLine(); 48 | builder.AppendFormat("ScmCommitId {0}",ScmCommitId); 49 | builder.AppendLine(); 50 | builder.AppendFormat("ScmBranch {0}",ScmBranch); 51 | builder.AppendLine(); 52 | builder.AppendFormat("CloudBuildTargetName {0}",CloudBuildTargetName); 53 | builder.AppendLine(); 54 | builder.AppendFormat("BuildNumber {0}",BuildNumber); 55 | builder.AppendLine(); 56 | builder.AppendLine("=======CloudBuildArgs END========="); 57 | builder.AppendLine(); 58 | 59 | return builder.ToString(); 60 | } 61 | } 62 | } -------------------------------------------------------------------------------- /Editor/UnityCloudBuild/CloudBuildArgs.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e93505f521e34e1d8970d48eb9ec61ff 3 | timeCreated: 1560616014 -------------------------------------------------------------------------------- /Editor/UnityCloudBuild/CloudBuildHelper.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 758be21d755544ad900cadda8f31ed70 3 | timeCreated: 1560615146 -------------------------------------------------------------------------------- /Editor/UnityCloudBuild/UnityCloudPostBuild.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Linq; 3 | using Newtonsoft.Json; 4 | using UnityEditor; 5 | using UnityEditor.Build; 6 | using UnityEditor.Build.Reporting; 7 | using UnityEngine; 8 | 9 | namespace UniGame 10 | { 11 | public class UnityCloudPostBuild : IPostprocessBuildWithReport 12 | { 13 | public static string BuildFileKey = nameof(BuildFileKey); 14 | private static List buildFiles = new List(); 15 | 16 | public static List OutputFiles 17 | { 18 | get 19 | { 20 | if (buildFiles != null) 21 | return buildFiles; 22 | var value = EditorPrefs.HasKey(BuildFileKey) ? 23 | EditorPrefs.GetString(BuildFileKey) : 24 | string.Empty; 25 | buildFiles = string.IsNullOrEmpty(value) 26 | ? new List() 27 | : JsonConvert.DeserializeObject>(value); 28 | 29 | return buildFiles; 30 | } 31 | set => buildFiles = value; 32 | } 33 | 34 | public int callbackOrder { get; } = 0; 35 | 36 | public void OnPostprocessBuild(BuildReport report) 37 | { 38 | Debug.Log($"===== UNIBUILD{nameof(UnityCloudPostBuild)} : {report}"); 39 | 40 | #if UNITY_2022_1_OR_NEWER 41 | var filesPaths = report.GetFiles().Select(x => x.path).ToList(); 42 | #else 43 | var filesPaths = report.files.Select(x => x.path).ToList(); 44 | #endif 45 | 46 | var buildResults = JsonConvert.SerializeObject(filesPaths); 47 | 48 | EditorPrefs.SetString(BuildFileKey,buildResults); 49 | 50 | OutputFiles = filesPaths; 51 | } 52 | } 53 | } -------------------------------------------------------------------------------- /Editor/UnityCloudBuild/UnityCloudPostBuild.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b09fa67f64b549dca0b7fab6d15bf994 3 | timeCreated: 1602253053 -------------------------------------------------------------------------------- /Editor/Windows.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: daed25e5d8181774f9d5d9c0e9b26c6e 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/Windows/UniBuildConfigurationAsset.cs: -------------------------------------------------------------------------------- 1 | #if ODIN_INSPECTOR || TRI_INSPECTOR 2 | 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using UniModules.Editor; 6 | using UniModules.UniGame.UniBuild.Editor.ClientBuild.BuildConfiguration; 7 | using UnityEngine; 8 | 9 | #if ODIN_INSPECTOR 10 | using Sirenix.OdinInspector; 11 | #endif 12 | 13 | #if TRI_INSPECTOR 14 | using TriInspector; 15 | #endif 16 | 17 | [CreateAssetMenu(menuName = "UniBuild/UniBuild ConfigurationAsset", fileName ="UniBuildConfigurationAsset")] 18 | public class UniBuildConfigurationAsset : ScriptableObject 19 | { 20 | #region public properties 21 | 22 | #if ODIN_INSPECTOR 23 | [Searchable] 24 | [ListDrawerSettings(Expanded = true)] 25 | #endif 26 | #if TRI_INSPECTOR || ODIN_INSPECTOR 27 | [InlineProperty] 28 | #endif 29 | public List configurations = new List(); 30 | 31 | #endregion 32 | 33 | #if TRI_INSPECTOR || ODIN_INSPECTOR 34 | [Button] 35 | #endif 36 | #if ODIN_INSPECTOR 37 | [OnInspectorInit] 38 | #endif 39 | public UniBuildConfigurationAsset Refresh() 40 | { 41 | configurations.Clear(); 42 | var configs = AssetEditorTools 43 | .GetAssets() 44 | .Select(x => new UniBuildItem(){buildCommands = x}); 45 | 46 | configurations.AddRange(configs); 47 | 48 | return this; 49 | } 50 | 51 | private void OnEnable() 52 | { 53 | Refresh(); 54 | } 55 | } 56 | 57 | #endif -------------------------------------------------------------------------------- /Editor/Windows/UniBuildConfigurationAsset.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ffecc5e8040e434b85a5434b9985ae14 3 | timeCreated: 1633601179 -------------------------------------------------------------------------------- /Editor/Windows/UniBuildConfigurationWindow.cs: -------------------------------------------------------------------------------- 1 | #if ODIN_INSPECTOR 2 | 3 | using System; 4 | using System.Collections.Generic; 5 | using Sirenix.OdinInspector; 6 | using Sirenix.OdinInspector.Editor; 7 | using UniModules.UniGame.UniBuild.Editor.ClientBuild.BuildConfiguration; 8 | using UnityEditor; 9 | using UnityEngine; 10 | 11 | namespace UniModules.UniGame.UniBuild.Editor.Windows 12 | { 13 | 14 | public class UniBuildConfigurationWindow : OdinEditorWindow 15 | { 16 | #region static data 17 | 18 | public static readonly string Title = "Build Configurations"; 19 | 20 | [MenuItem("UniGame/Uni Build/Show Configs")] 21 | public static void ShowWindow() 22 | { 23 | // Get existing open window or if none, make a new one: 24 | var window = GetWindow(); 25 | window.titleContent = new GUIContent(Title); 26 | window.InitializeWindow(); 27 | window.Show(); 28 | } 29 | 30 | #endregion 31 | 32 | #region public properties 33 | 34 | [HideLabel] 35 | [InlineEditor(InlineEditorObjectFieldModes.Boxed)] 36 | public UniBuildConfigurationAsset configurationAsset; 37 | 38 | #endregion 39 | 40 | public void InitializeWindow() 41 | { 42 | configurationAsset = CreateInstance(); 43 | configurationAsset.Refresh(); 44 | } 45 | 46 | } 47 | 48 | 49 | } 50 | 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /Editor/Windows/UniBuildConfigurationWindow.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fb3fd53bc0197184797f683e76c62560 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Windows/UniBuildItem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UniModules.UniGame.UniBuild.Editor.ClientBuild.BuildConfiguration; 3 | 4 | #if ODIN_INSPECTOR 5 | using Sirenix.OdinInspector; 6 | #endif 7 | 8 | #if TRI_INSPECTOR 9 | using TriInspector; 10 | #endif 11 | 12 | [Serializable] 13 | #if ODIN_INSPECTOR 14 | [HideLabel] 15 | #endif 16 | #if ODIN_INSPECTOR || TRI_INSPECTOR 17 | [InlineProperty] 18 | #endif 19 | public class UniBuildItem 20 | { 21 | #if ODIN_INSPECTOR || TRI_INSPECTOR 22 | [InlineEditor()] 23 | #endif 24 | #if ODIN_INSPECTOR 25 | [HorizontalGroup(nameof(UniBuildItem))] 26 | #endif 27 | public UniBuildCommandsMap buildCommands; 28 | 29 | #if ODIN_INSPECTOR || TRI_INSPECTOR 30 | [Button] 31 | #endif 32 | public void Build() 33 | { 34 | buildCommands.ExecuteBuild(); 35 | } 36 | } -------------------------------------------------------------------------------- /Editor/Windows/UniBuildItem.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fef84d5bb7c9492daf16d97bd7a8311c 3 | timeCreated: 1633604368 -------------------------------------------------------------------------------- /Editor/unigame.buildpipeline.editor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "unigame.buildpipeline.editor", 3 | "rootNamespace": "", 4 | "references": [ 5 | "GUID:8e4577c9194c10845984cf27eb974fd1", 6 | "GUID:2796129a6c23eb84a8181f62bf7332f1", 7 | "GUID:47336d8c547834e4e926518cb45a846d", 8 | "GUID:324caed91501a9c47a04ebfd87b68794", 9 | "GUID:7be4600869ec09d4ca9a37d1dbfbf1a2", 10 | "GUID:90456d836f7b85c45a469d1f5ee611b1", 11 | "GUID:e851236b9ac2b9b4eaaa99506366edea" 12 | ], 13 | "includePlatforms": [ 14 | "Editor" 15 | ], 16 | "excludePlatforms": [], 17 | "allowUnsafeCode": true, 18 | "overrideReferences": false, 19 | "precompiledReferences": [], 20 | "autoReferenced": true, 21 | "defineConstraints": [], 22 | "versionDefines": [ 23 | { 24 | "name": "com.codewriter.triinspector", 25 | "expression": "", 26 | "define": "TRI_INSPECTOR" 27 | } 28 | ], 29 | "noEngineReferences": false 30 | } -------------------------------------------------------------------------------- /Editor/unigame.buildpipeline.editor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f0321ba97c62c974b82a7fc7c1d544f9 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /GitAssets.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 40064c42b57a26a4b861fe7a10cee7fb 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /GitAssets/build_configs_windows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UnioGame/UniGame.UniBuild/5dd3ff5ff41c7987655f5967adf06150366166b7/GitAssets/build_configs_windows.png -------------------------------------------------------------------------------- /GitAssets/build_configs_windows.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4da3a03d74adbf342bd78184e6ad6548 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | grayScaleToAlpha: 0 28 | generateCubemap: 6 29 | cubemapConvolution: 0 30 | seamlessCubemap: 0 31 | textureFormat: 1 32 | maxTextureSize: 2048 33 | textureSettings: 34 | serializedVersion: 2 35 | filterMode: -1 36 | aniso: -1 37 | mipBias: -100 38 | wrapU: -1 39 | wrapV: -1 40 | wrapW: -1 41 | nPOTScale: 1 42 | lightmap: 0 43 | compressionQuality: 50 44 | spriteMode: 0 45 | spriteExtrude: 1 46 | spriteMeshType: 1 47 | alignment: 0 48 | spritePivot: {x: 0.5, y: 0.5} 49 | spritePixelsToUnits: 100 50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 51 | spriteGenerateFallbackPhysicsShape: 1 52 | alphaUsage: 1 53 | alphaIsTransparency: 0 54 | spriteTessellationDetail: -1 55 | textureType: 0 56 | textureShape: 1 57 | singleChannelComponent: 0 58 | flipbookRows: 1 59 | flipbookColumns: 1 60 | maxTextureSizeSet: 0 61 | compressionQualitySet: 0 62 | textureFormatSet: 0 63 | ignorePngGamma: 0 64 | applyGammaDecoding: 0 65 | platformSettings: 66 | - serializedVersion: 3 67 | buildTarget: DefaultTexturePlatform 68 | maxTextureSize: 2048 69 | resizeAlgorithm: 0 70 | textureFormat: -1 71 | textureCompression: 1 72 | compressionQuality: 50 73 | crunchedCompression: 0 74 | allowsAlphaSplitting: 0 75 | overridden: 0 76 | androidETC2FallbackOverride: 0 77 | forceMaximumCompressionQuality_BC6H_BC7: 0 78 | spriteSheet: 79 | serializedVersion: 2 80 | sprites: [] 81 | outline: [] 82 | physicsShape: [] 83 | bones: [] 84 | spriteID: 85 | internalID: 0 86 | vertices: [] 87 | indices: 88 | edges: [] 89 | weights: [] 90 | secondaryTextures: [] 91 | spritePackingTag: 92 | pSDRemoveMatte: 0 93 | pSDShowRemoveMatteOption: 0 94 | userData: 95 | assetBundleName: 96 | assetBundleVariant: 97 | -------------------------------------------------------------------------------- /GitAssets/build_map_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UnioGame/UniGame.UniBuild/5dd3ff5ff41c7987655f5967adf06150366166b7/GitAssets/build_map_window.png -------------------------------------------------------------------------------- /GitAssets/build_map_window.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ff04f78560efad54497215ee52be2997 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | ignoreMasterTextureLimit: 0 28 | grayScaleToAlpha: 0 29 | generateCubemap: 6 30 | cubemapConvolution: 0 31 | seamlessCubemap: 0 32 | textureFormat: 1 33 | maxTextureSize: 2048 34 | textureSettings: 35 | serializedVersion: 2 36 | filterMode: 1 37 | aniso: 1 38 | mipBias: 0 39 | wrapU: 0 40 | wrapV: 0 41 | wrapW: 0 42 | nPOTScale: 1 43 | lightmap: 0 44 | compressionQuality: 50 45 | spriteMode: 0 46 | spriteExtrude: 1 47 | spriteMeshType: 1 48 | alignment: 0 49 | spritePivot: {x: 0.5, y: 0.5} 50 | spritePixelsToUnits: 100 51 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 52 | spriteGenerateFallbackPhysicsShape: 1 53 | alphaUsage: 1 54 | alphaIsTransparency: 0 55 | spriteTessellationDetail: -1 56 | textureType: 0 57 | textureShape: 1 58 | singleChannelComponent: 0 59 | flipbookRows: 1 60 | flipbookColumns: 1 61 | maxTextureSizeSet: 0 62 | compressionQualitySet: 0 63 | textureFormatSet: 0 64 | ignorePngGamma: 0 65 | applyGammaDecoding: 0 66 | platformSettings: 67 | - serializedVersion: 3 68 | buildTarget: DefaultTexturePlatform 69 | maxTextureSize: 2048 70 | resizeAlgorithm: 0 71 | textureFormat: -1 72 | textureCompression: 1 73 | compressionQuality: 50 74 | crunchedCompression: 0 75 | allowsAlphaSplitting: 0 76 | overridden: 0 77 | androidETC2FallbackOverride: 0 78 | forceMaximumCompressionQuality_BC6H_BC7: 0 79 | spriteSheet: 80 | serializedVersion: 2 81 | sprites: [] 82 | outline: [] 83 | physicsShape: [] 84 | bones: [] 85 | spriteID: 86 | internalID: 0 87 | vertices: [] 88 | indices: 89 | edges: [] 90 | weights: [] 91 | secondaryTextures: [] 92 | nameFileIdTable: {} 93 | spritePackingTag: 94 | pSDRemoveMatte: 0 95 | pSDShowRemoveMatteOption: 0 96 | userData: 97 | assetBundleName: 98 | assetBundleVariant: 99 | -------------------------------------------------------------------------------- /GitAssets/commands-package.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UnioGame/UniGame.UniBuild/5dd3ff5ff41c7987655f5967adf06150366166b7/GitAssets/commands-package.png -------------------------------------------------------------------------------- /GitAssets/commands-package.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: aced2b78eed43a040a323c087acce08c 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: 2 36 | mipBias: -100 37 | wrapU: 0 38 | wrapV: 0 39 | wrapW: 0 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 8192 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 8192 77 | resizeAlgorithm: 0 78 | textureFormat: -1 79 | textureCompression: 1 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | - serializedVersion: 3 87 | buildTarget: iPhone 88 | maxTextureSize: 8192 89 | resizeAlgorithm: 0 90 | textureFormat: -1 91 | textureCompression: 1 92 | compressionQuality: 50 93 | crunchedCompression: 0 94 | allowsAlphaSplitting: 0 95 | overridden: 0 96 | androidETC2FallbackOverride: 0 97 | forceMaximumCompressionQuality_BC6H_BC7: 0 98 | - serializedVersion: 3 99 | buildTarget: Android 100 | maxTextureSize: 8192 101 | resizeAlgorithm: 0 102 | textureFormat: -1 103 | textureCompression: 1 104 | compressionQuality: 50 105 | crunchedCompression: 0 106 | allowsAlphaSplitting: 0 107 | overridden: 0 108 | androidETC2FallbackOverride: 0 109 | forceMaximumCompressionQuality_BC6H_BC7: 0 110 | - serializedVersion: 3 111 | buildTarget: Windows Store Apps 112 | maxTextureSize: 8192 113 | resizeAlgorithm: 0 114 | textureFormat: -1 115 | textureCompression: 1 116 | compressionQuality: 50 117 | crunchedCompression: 0 118 | allowsAlphaSplitting: 0 119 | overridden: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | spriteSheet: 123 | serializedVersion: 2 124 | sprites: [] 125 | outline: [] 126 | physicsShape: [] 127 | bones: [] 128 | spriteID: 129 | internalID: 0 130 | vertices: [] 131 | indices: 132 | edges: [] 133 | weights: [] 134 | secondaryTextures: [] 135 | spritePackingTag: 136 | pSDRemoveMatte: 0 137 | pSDShowRemoveMatteOption: 0 138 | userData: 139 | assetBundleName: 140 | assetBundleVariant: 141 | -------------------------------------------------------------------------------- /GitAssets/commands1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UnioGame/UniGame.UniBuild/5dd3ff5ff41c7987655f5967adf06150366166b7/GitAssets/commands1.png -------------------------------------------------------------------------------- /GitAssets/commands1.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a26fc1682c3953a4e8fe17d62ea98507 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: 2 36 | mipBias: -100 37 | wrapU: 0 38 | wrapV: 0 39 | wrapW: 0 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 8192 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 8192 77 | resizeAlgorithm: 0 78 | textureFormat: -1 79 | textureCompression: 1 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | - serializedVersion: 3 87 | buildTarget: iPhone 88 | maxTextureSize: 8192 89 | resizeAlgorithm: 0 90 | textureFormat: -1 91 | textureCompression: 1 92 | compressionQuality: 50 93 | crunchedCompression: 0 94 | allowsAlphaSplitting: 0 95 | overridden: 0 96 | androidETC2FallbackOverride: 0 97 | forceMaximumCompressionQuality_BC6H_BC7: 0 98 | - serializedVersion: 3 99 | buildTarget: Android 100 | maxTextureSize: 8192 101 | resizeAlgorithm: 0 102 | textureFormat: -1 103 | textureCompression: 1 104 | compressionQuality: 50 105 | crunchedCompression: 0 106 | allowsAlphaSplitting: 0 107 | overridden: 0 108 | androidETC2FallbackOverride: 0 109 | forceMaximumCompressionQuality_BC6H_BC7: 0 110 | - serializedVersion: 3 111 | buildTarget: Windows Store Apps 112 | maxTextureSize: 8192 113 | resizeAlgorithm: 0 114 | textureFormat: -1 115 | textureCompression: 1 116 | compressionQuality: 50 117 | crunchedCompression: 0 118 | allowsAlphaSplitting: 0 119 | overridden: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | spriteSheet: 123 | serializedVersion: 2 124 | sprites: [] 125 | outline: [] 126 | physicsShape: [] 127 | bones: [] 128 | spriteID: 129 | internalID: 0 130 | vertices: [] 131 | indices: 132 | edges: [] 133 | weights: [] 134 | secondaryTextures: [] 135 | spritePackingTag: 136 | pSDRemoveMatte: 0 137 | pSDShowRemoveMatteOption: 0 138 | userData: 139 | assetBundleName: 140 | assetBundleVariant: 141 | -------------------------------------------------------------------------------- /GitAssets/commands2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UnioGame/UniGame.UniBuild/5dd3ff5ff41c7987655f5967adf06150366166b7/GitAssets/commands2.png -------------------------------------------------------------------------------- /GitAssets/commands2.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 56c7f9c1225707948ba501381516d717 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: 2 36 | mipBias: -100 37 | wrapU: 0 38 | wrapV: 0 39 | wrapW: 0 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 8192 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 8192 77 | resizeAlgorithm: 0 78 | textureFormat: -1 79 | textureCompression: 1 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | - serializedVersion: 3 87 | buildTarget: iPhone 88 | maxTextureSize: 8192 89 | resizeAlgorithm: 0 90 | textureFormat: -1 91 | textureCompression: 1 92 | compressionQuality: 50 93 | crunchedCompression: 0 94 | allowsAlphaSplitting: 0 95 | overridden: 0 96 | androidETC2FallbackOverride: 0 97 | forceMaximumCompressionQuality_BC6H_BC7: 0 98 | - serializedVersion: 3 99 | buildTarget: Android 100 | maxTextureSize: 8192 101 | resizeAlgorithm: 0 102 | textureFormat: -1 103 | textureCompression: 1 104 | compressionQuality: 50 105 | crunchedCompression: 0 106 | allowsAlphaSplitting: 0 107 | overridden: 0 108 | androidETC2FallbackOverride: 0 109 | forceMaximumCompressionQuality_BC6H_BC7: 0 110 | - serializedVersion: 3 111 | buildTarget: Windows Store Apps 112 | maxTextureSize: 8192 113 | resizeAlgorithm: 0 114 | textureFormat: -1 115 | textureCompression: 1 116 | compressionQuality: 50 117 | crunchedCompression: 0 118 | allowsAlphaSplitting: 0 119 | overridden: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | spriteSheet: 123 | serializedVersion: 2 124 | sprites: [] 125 | outline: [] 126 | physicsShape: [] 127 | bones: [] 128 | spriteID: 129 | internalID: 0 130 | vertices: [] 131 | indices: 132 | edges: [] 133 | weights: [] 134 | secondaryTextures: [] 135 | spritePackingTag: 136 | pSDRemoveMatte: 0 137 | pSDShowRemoveMatteOption: 0 138 | userData: 139 | assetBundleName: 140 | assetBundleVariant: 141 | -------------------------------------------------------------------------------- /GitAssets/demo_build_pipeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UnioGame/UniGame.UniBuild/5dd3ff5ff41c7987655f5967adf06150366166b7/GitAssets/demo_build_pipeline.png -------------------------------------------------------------------------------- /GitAssets/demo_build_pipeline.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 713e9e0e82dec1e41b6b959143046571 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | grayScaleToAlpha: 0 28 | generateCubemap: 6 29 | cubemapConvolution: 0 30 | seamlessCubemap: 0 31 | textureFormat: 1 32 | maxTextureSize: 2048 33 | textureSettings: 34 | serializedVersion: 2 35 | filterMode: -1 36 | aniso: -1 37 | mipBias: -100 38 | wrapU: -1 39 | wrapV: -1 40 | wrapW: -1 41 | nPOTScale: 1 42 | lightmap: 0 43 | compressionQuality: 50 44 | spriteMode: 0 45 | spriteExtrude: 1 46 | spriteMeshType: 1 47 | alignment: 0 48 | spritePivot: {x: 0.5, y: 0.5} 49 | spritePixelsToUnits: 100 50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 51 | spriteGenerateFallbackPhysicsShape: 1 52 | alphaUsage: 1 53 | alphaIsTransparency: 0 54 | spriteTessellationDetail: -1 55 | textureType: 0 56 | textureShape: 1 57 | singleChannelComponent: 0 58 | flipbookRows: 1 59 | flipbookColumns: 1 60 | maxTextureSizeSet: 0 61 | compressionQualitySet: 0 62 | textureFormatSet: 0 63 | ignorePngGamma: 0 64 | applyGammaDecoding: 0 65 | platformSettings: 66 | - serializedVersion: 3 67 | buildTarget: DefaultTexturePlatform 68 | maxTextureSize: 2048 69 | resizeAlgorithm: 0 70 | textureFormat: -1 71 | textureCompression: 1 72 | compressionQuality: 50 73 | crunchedCompression: 0 74 | allowsAlphaSplitting: 0 75 | overridden: 0 76 | androidETC2FallbackOverride: 0 77 | forceMaximumCompressionQuality_BC6H_BC7: 0 78 | spriteSheet: 79 | serializedVersion: 2 80 | sprites: [] 81 | outline: [] 82 | physicsShape: [] 83 | bones: [] 84 | spriteID: 85 | internalID: 0 86 | vertices: [] 87 | indices: 88 | edges: [] 89 | weights: [] 90 | secondaryTextures: [] 91 | spritePackingTag: 92 | pSDRemoveMatte: 0 93 | pSDShowRemoveMatteOption: 0 94 | userData: 95 | assetBundleName: 96 | assetBundleVariant: 97 | -------------------------------------------------------------------------------- /GitAssets/serializable-pipeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UnioGame/UniGame.UniBuild/5dd3ff5ff41c7987655f5967adf06150366166b7/GitAssets/serializable-pipeline.png -------------------------------------------------------------------------------- /GitAssets/serializable-pipeline.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ba12b3604e7e1f640be0009d0f47deaf 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: 2 36 | mipBias: -100 37 | wrapU: 0 38 | wrapV: 0 39 | wrapW: 0 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 8192 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 8192 77 | resizeAlgorithm: 0 78 | textureFormat: -1 79 | textureCompression: 1 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | - serializedVersion: 3 87 | buildTarget: iPhone 88 | maxTextureSize: 8192 89 | resizeAlgorithm: 0 90 | textureFormat: -1 91 | textureCompression: 1 92 | compressionQuality: 50 93 | crunchedCompression: 0 94 | allowsAlphaSplitting: 0 95 | overridden: 0 96 | androidETC2FallbackOverride: 0 97 | forceMaximumCompressionQuality_BC6H_BC7: 0 98 | - serializedVersion: 3 99 | buildTarget: Android 100 | maxTextureSize: 8192 101 | resizeAlgorithm: 0 102 | textureFormat: -1 103 | textureCompression: 1 104 | compressionQuality: 50 105 | crunchedCompression: 0 106 | allowsAlphaSplitting: 0 107 | overridden: 0 108 | androidETC2FallbackOverride: 0 109 | forceMaximumCompressionQuality_BC6H_BC7: 0 110 | - serializedVersion: 3 111 | buildTarget: Windows Store Apps 112 | maxTextureSize: 8192 113 | resizeAlgorithm: 0 114 | textureFormat: -1 115 | textureCompression: 1 116 | compressionQuality: 50 117 | crunchedCompression: 0 118 | allowsAlphaSplitting: 0 119 | overridden: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | spriteSheet: 123 | serializedVersion: 2 124 | sprites: [] 125 | outline: [] 126 | physicsShape: [] 127 | bones: [] 128 | spriteID: 129 | internalID: 0 130 | vertices: [] 131 | indices: 132 | edges: [] 133 | weights: [] 134 | secondaryTextures: [] 135 | spritePackingTag: 136 | pSDRemoveMatte: 0 137 | pSDShowRemoveMatteOption: 0 138 | userData: 139 | assetBundleName: 140 | assetBundleVariant: 141 | -------------------------------------------------------------------------------- /GitAssets/unibuild1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UnioGame/UniGame.UniBuild/5dd3ff5ff41c7987655f5967adf06150366166b7/GitAssets/unibuild1.png -------------------------------------------------------------------------------- /GitAssets/unibuild1.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 32c36db85621d0f4587d045dfbb6025e 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 0 41 | wrapV: 0 42 | wrapW: 0 43 | nPOTScale: 1 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 0 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 1 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | ignorePlatformSupport: 0 81 | androidETC2FallbackOverride: 0 82 | forceMaximumCompressionQuality_BC6H_BC7: 0 83 | - serializedVersion: 3 84 | buildTarget: Standalone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | ignorePlatformSupport: 0 94 | androidETC2FallbackOverride: 0 95 | forceMaximumCompressionQuality_BC6H_BC7: 0 96 | - serializedVersion: 3 97 | buildTarget: iPhone 98 | maxTextureSize: 2048 99 | resizeAlgorithm: 0 100 | textureFormat: -1 101 | textureCompression: 1 102 | compressionQuality: 50 103 | crunchedCompression: 0 104 | allowsAlphaSplitting: 0 105 | overridden: 0 106 | ignorePlatformSupport: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: WebGL 111 | maxTextureSize: 2048 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | ignorePlatformSupport: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | - serializedVersion: 3 123 | buildTarget: Android 124 | maxTextureSize: 2048 125 | resizeAlgorithm: 0 126 | textureFormat: -1 127 | textureCompression: 1 128 | compressionQuality: 50 129 | crunchedCompression: 0 130 | allowsAlphaSplitting: 0 131 | overridden: 0 132 | ignorePlatformSupport: 0 133 | androidETC2FallbackOverride: 0 134 | forceMaximumCompressionQuality_BC6H_BC7: 0 135 | spriteSheet: 136 | serializedVersion: 2 137 | sprites: [] 138 | outline: [] 139 | physicsShape: [] 140 | bones: [] 141 | spriteID: 142 | internalID: 0 143 | vertices: [] 144 | indices: 145 | edges: [] 146 | weights: [] 147 | secondaryTextures: [] 148 | nameFileIdTable: {} 149 | mipmapLimitGroupName: 150 | pSDRemoveMatte: 0 151 | userData: 152 | assetBundleName: 153 | assetBundleVariant: 154 | -------------------------------------------------------------------------------- /GitAssets/unibuild2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UnioGame/UniGame.UniBuild/5dd3ff5ff41c7987655f5967adf06150366166b7/GitAssets/unibuild2.png -------------------------------------------------------------------------------- /GitAssets/unibuild2.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ea0833ba8172e7645b8b84bce35694c0 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 0 41 | wrapV: 0 42 | wrapW: 0 43 | nPOTScale: 1 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 0 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 1 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | ignorePlatformSupport: 0 81 | androidETC2FallbackOverride: 0 82 | forceMaximumCompressionQuality_BC6H_BC7: 0 83 | - serializedVersion: 3 84 | buildTarget: Standalone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | ignorePlatformSupport: 0 94 | androidETC2FallbackOverride: 0 95 | forceMaximumCompressionQuality_BC6H_BC7: 0 96 | - serializedVersion: 3 97 | buildTarget: iPhone 98 | maxTextureSize: 2048 99 | resizeAlgorithm: 0 100 | textureFormat: -1 101 | textureCompression: 1 102 | compressionQuality: 50 103 | crunchedCompression: 0 104 | allowsAlphaSplitting: 0 105 | overridden: 0 106 | ignorePlatformSupport: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: WebGL 111 | maxTextureSize: 2048 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | ignorePlatformSupport: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | - serializedVersion: 3 123 | buildTarget: Android 124 | maxTextureSize: 2048 125 | resizeAlgorithm: 0 126 | textureFormat: -1 127 | textureCompression: 1 128 | compressionQuality: 50 129 | crunchedCompression: 0 130 | allowsAlphaSplitting: 0 131 | overridden: 0 132 | ignorePlatformSupport: 0 133 | androidETC2FallbackOverride: 0 134 | forceMaximumCompressionQuality_BC6H_BC7: 0 135 | spriteSheet: 136 | serializedVersion: 2 137 | sprites: [] 138 | outline: [] 139 | physicsShape: [] 140 | bones: [] 141 | spriteID: 142 | internalID: 0 143 | vertices: [] 144 | indices: 145 | edges: [] 146 | weights: [] 147 | secondaryTextures: [] 148 | nameFileIdTable: {} 149 | mipmapLimitGroupName: 150 | pSDRemoveMatte: 0 151 | userData: 152 | assetBundleName: 153 | assetBundleVariant: 154 | -------------------------------------------------------------------------------- /GitAssets/unibuild3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UnioGame/UniGame.UniBuild/5dd3ff5ff41c7987655f5967adf06150366166b7/GitAssets/unibuild3.png -------------------------------------------------------------------------------- /GitAssets/unibuild3.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 01c5e72c0e8c8b04fb80c130f25dacca 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 0 41 | wrapV: 0 42 | wrapW: 0 43 | nPOTScale: 1 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 0 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 1 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | ignorePlatformSupport: 0 81 | androidETC2FallbackOverride: 0 82 | forceMaximumCompressionQuality_BC6H_BC7: 0 83 | - serializedVersion: 3 84 | buildTarget: Standalone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | ignorePlatformSupport: 0 94 | androidETC2FallbackOverride: 0 95 | forceMaximumCompressionQuality_BC6H_BC7: 0 96 | - serializedVersion: 3 97 | buildTarget: iPhone 98 | maxTextureSize: 2048 99 | resizeAlgorithm: 0 100 | textureFormat: -1 101 | textureCompression: 1 102 | compressionQuality: 50 103 | crunchedCompression: 0 104 | allowsAlphaSplitting: 0 105 | overridden: 0 106 | ignorePlatformSupport: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: WebGL 111 | maxTextureSize: 2048 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | ignorePlatformSupport: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | - serializedVersion: 3 123 | buildTarget: Android 124 | maxTextureSize: 2048 125 | resizeAlgorithm: 0 126 | textureFormat: -1 127 | textureCompression: 1 128 | compressionQuality: 50 129 | crunchedCompression: 0 130 | allowsAlphaSplitting: 0 131 | overridden: 0 132 | ignorePlatformSupport: 0 133 | androidETC2FallbackOverride: 0 134 | forceMaximumCompressionQuality_BC6H_BC7: 0 135 | spriteSheet: 136 | serializedVersion: 2 137 | sprites: [] 138 | outline: [] 139 | physicsShape: [] 140 | bones: [] 141 | spriteID: 142 | internalID: 0 143 | vertices: [] 144 | indices: 145 | edges: [] 146 | weights: [] 147 | secondaryTextures: [] 148 | nameFileIdTable: {} 149 | mipmapLimitGroupName: 150 | pSDRemoveMatte: 0 151 | userData: 152 | assetBundleName: 153 | assetBundleVariant: 154 | -------------------------------------------------------------------------------- /GitAssets/unibuild4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UnioGame/UniGame.UniBuild/5dd3ff5ff41c7987655f5967adf06150366166b7/GitAssets/unibuild4.png -------------------------------------------------------------------------------- /GitAssets/unibuild4.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7d3332f95bd5d64459ce4f513a7c66b3 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 0 41 | wrapV: 0 42 | wrapW: 0 43 | nPOTScale: 1 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 0 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 1 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | ignorePlatformSupport: 0 81 | androidETC2FallbackOverride: 0 82 | forceMaximumCompressionQuality_BC6H_BC7: 0 83 | - serializedVersion: 3 84 | buildTarget: Standalone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | ignorePlatformSupport: 0 94 | androidETC2FallbackOverride: 0 95 | forceMaximumCompressionQuality_BC6H_BC7: 0 96 | - serializedVersion: 3 97 | buildTarget: iPhone 98 | maxTextureSize: 2048 99 | resizeAlgorithm: 0 100 | textureFormat: -1 101 | textureCompression: 1 102 | compressionQuality: 50 103 | crunchedCompression: 0 104 | allowsAlphaSplitting: 0 105 | overridden: 0 106 | ignorePlatformSupport: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: WebGL 111 | maxTextureSize: 2048 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | ignorePlatformSupport: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | - serializedVersion: 3 123 | buildTarget: Android 124 | maxTextureSize: 2048 125 | resizeAlgorithm: 0 126 | textureFormat: -1 127 | textureCompression: 1 128 | compressionQuality: 50 129 | crunchedCompression: 0 130 | allowsAlphaSplitting: 0 131 | overridden: 0 132 | ignorePlatformSupport: 0 133 | androidETC2FallbackOverride: 0 134 | forceMaximumCompressionQuality_BC6H_BC7: 0 135 | spriteSheet: 136 | serializedVersion: 2 137 | sprites: [] 138 | outline: [] 139 | physicsShape: [] 140 | bones: [] 141 | spriteID: 142 | internalID: 0 143 | vertices: [] 144 | indices: 145 | edges: [] 146 | weights: [] 147 | secondaryTextures: [] 148 | nameFileIdTable: {} 149 | mipmapLimitGroupName: 150 | pSDRemoveMatte: 0 151 | userData: 152 | assetBundleName: 153 | assetBundleVariant: 154 | -------------------------------------------------------------------------------- /GitAssets/unibuild5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UnioGame/UniGame.UniBuild/5dd3ff5ff41c7987655f5967adf06150366166b7/GitAssets/unibuild5.png -------------------------------------------------------------------------------- /GitAssets/unibuild5.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0b4a4175318fe954390196f84f2a53c8 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 0 41 | wrapV: 0 42 | wrapW: 0 43 | nPOTScale: 1 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 0 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 1 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | ignorePlatformSupport: 0 81 | androidETC2FallbackOverride: 0 82 | forceMaximumCompressionQuality_BC6H_BC7: 0 83 | - serializedVersion: 3 84 | buildTarget: Standalone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | ignorePlatformSupport: 0 94 | androidETC2FallbackOverride: 0 95 | forceMaximumCompressionQuality_BC6H_BC7: 0 96 | - serializedVersion: 3 97 | buildTarget: iPhone 98 | maxTextureSize: 2048 99 | resizeAlgorithm: 0 100 | textureFormat: -1 101 | textureCompression: 1 102 | compressionQuality: 50 103 | crunchedCompression: 0 104 | allowsAlphaSplitting: 0 105 | overridden: 0 106 | ignorePlatformSupport: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: WebGL 111 | maxTextureSize: 2048 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | ignorePlatformSupport: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | - serializedVersion: 3 123 | buildTarget: Android 124 | maxTextureSize: 2048 125 | resizeAlgorithm: 0 126 | textureFormat: -1 127 | textureCompression: 1 128 | compressionQuality: 50 129 | crunchedCompression: 0 130 | allowsAlphaSplitting: 0 131 | overridden: 0 132 | ignorePlatformSupport: 0 133 | androidETC2FallbackOverride: 0 134 | forceMaximumCompressionQuality_BC6H_BC7: 0 135 | spriteSheet: 136 | serializedVersion: 2 137 | sprites: [] 138 | outline: [] 139 | physicsShape: [] 140 | bones: [] 141 | spriteID: 142 | internalID: 0 143 | vertices: [] 144 | indices: 145 | edges: [] 146 | weights: [] 147 | secondaryTextures: [] 148 | nameFileIdTable: {} 149 | mipmapLimitGroupName: 150 | pSDRemoveMatte: 0 151 | userData: 152 | assetBundleName: 153 | assetBundleVariant: 154 | -------------------------------------------------------------------------------- /GitAssets/unibuild6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UnioGame/UniGame.UniBuild/5dd3ff5ff41c7987655f5967adf06150366166b7/GitAssets/unibuild6.png -------------------------------------------------------------------------------- /GitAssets/unibuild6.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5c5743fee812be54b86bb9872f460f56 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 13 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 0 41 | wrapV: 0 42 | wrapW: 0 43 | nPOTScale: 1 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 0 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 4 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 1 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | ignorePlatformSupport: 0 81 | androidETC2FallbackOverride: 0 82 | forceMaximumCompressionQuality_BC6H_BC7: 0 83 | - serializedVersion: 4 84 | buildTarget: WebGL 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | ignorePlatformSupport: 0 94 | androidETC2FallbackOverride: 0 95 | forceMaximumCompressionQuality_BC6H_BC7: 0 96 | - serializedVersion: 4 97 | buildTarget: Win64 98 | maxTextureSize: 2048 99 | resizeAlgorithm: 0 100 | textureFormat: -1 101 | textureCompression: 1 102 | compressionQuality: 50 103 | crunchedCompression: 0 104 | allowsAlphaSplitting: 0 105 | overridden: 0 106 | ignorePlatformSupport: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 4 110 | buildTarget: iOS 111 | maxTextureSize: 2048 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | ignorePlatformSupport: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | - serializedVersion: 4 123 | buildTarget: Standalone 124 | maxTextureSize: 2048 125 | resizeAlgorithm: 0 126 | textureFormat: -1 127 | textureCompression: 1 128 | compressionQuality: 50 129 | crunchedCompression: 0 130 | allowsAlphaSplitting: 0 131 | overridden: 0 132 | ignorePlatformSupport: 0 133 | androidETC2FallbackOverride: 0 134 | forceMaximumCompressionQuality_BC6H_BC7: 0 135 | - serializedVersion: 4 136 | buildTarget: Android 137 | maxTextureSize: 2048 138 | resizeAlgorithm: 0 139 | textureFormat: -1 140 | textureCompression: 1 141 | compressionQuality: 50 142 | crunchedCompression: 0 143 | allowsAlphaSplitting: 0 144 | overridden: 0 145 | ignorePlatformSupport: 0 146 | androidETC2FallbackOverride: 0 147 | forceMaximumCompressionQuality_BC6H_BC7: 0 148 | spriteSheet: 149 | serializedVersion: 2 150 | sprites: [] 151 | outline: [] 152 | customData: 153 | physicsShape: [] 154 | bones: [] 155 | spriteID: 156 | internalID: 0 157 | vertices: [] 158 | indices: 159 | edges: [] 160 | weights: [] 161 | secondaryTextures: [] 162 | spriteCustomMetadata: 163 | entries: [] 164 | nameFileIdTable: {} 165 | mipmapLimitGroupName: 166 | pSDRemoveMatte: 0 167 | userData: 168 | assetBundleName: 169 | assetBundleVariant: 170 | -------------------------------------------------------------------------------- /GitAssets/unibuild7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UnioGame/UniGame.UniBuild/5dd3ff5ff41c7987655f5967adf06150366166b7/GitAssets/unibuild7.png -------------------------------------------------------------------------------- /GitAssets/unibuild7.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5eee5d8ce6ebf2a4a94e7aa756a5a04e 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 13 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 0 41 | wrapV: 0 42 | wrapW: 0 43 | nPOTScale: 1 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 0 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 4 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 1 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | ignorePlatformSupport: 0 81 | androidETC2FallbackOverride: 0 82 | forceMaximumCompressionQuality_BC6H_BC7: 0 83 | - serializedVersion: 4 84 | buildTarget: WebGL 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | ignorePlatformSupport: 0 94 | androidETC2FallbackOverride: 0 95 | forceMaximumCompressionQuality_BC6H_BC7: 0 96 | - serializedVersion: 4 97 | buildTarget: Win64 98 | maxTextureSize: 2048 99 | resizeAlgorithm: 0 100 | textureFormat: -1 101 | textureCompression: 1 102 | compressionQuality: 50 103 | crunchedCompression: 0 104 | allowsAlphaSplitting: 0 105 | overridden: 0 106 | ignorePlatformSupport: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 4 110 | buildTarget: iOS 111 | maxTextureSize: 2048 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | ignorePlatformSupport: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | - serializedVersion: 4 123 | buildTarget: Standalone 124 | maxTextureSize: 2048 125 | resizeAlgorithm: 0 126 | textureFormat: -1 127 | textureCompression: 1 128 | compressionQuality: 50 129 | crunchedCompression: 0 130 | allowsAlphaSplitting: 0 131 | overridden: 0 132 | ignorePlatformSupport: 0 133 | androidETC2FallbackOverride: 0 134 | forceMaximumCompressionQuality_BC6H_BC7: 0 135 | - serializedVersion: 4 136 | buildTarget: Android 137 | maxTextureSize: 2048 138 | resizeAlgorithm: 0 139 | textureFormat: -1 140 | textureCompression: 1 141 | compressionQuality: 50 142 | crunchedCompression: 0 143 | allowsAlphaSplitting: 0 144 | overridden: 0 145 | ignorePlatformSupport: 0 146 | androidETC2FallbackOverride: 0 147 | forceMaximumCompressionQuality_BC6H_BC7: 0 148 | spriteSheet: 149 | serializedVersion: 2 150 | sprites: [] 151 | outline: [] 152 | customData: 153 | physicsShape: [] 154 | bones: [] 155 | spriteID: 156 | internalID: 0 157 | vertices: [] 158 | indices: 159 | edges: [] 160 | weights: [] 161 | secondaryTextures: [] 162 | spriteCustomMetadata: 163 | entries: [] 164 | nameFileIdTable: {} 165 | mipmapLimitGroupName: 166 | pSDRemoveMatte: 0 167 | userData: 168 | assetBundleName: 169 | assetBundleVariant: 170 | -------------------------------------------------------------------------------- /GitAssets/unibuild8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UnioGame/UniGame.UniBuild/5dd3ff5ff41c7987655f5967adf06150366166b7/GitAssets/unibuild8.png -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 UniGame 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /LICENSE.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e7a9e8b81cf678d4bbe4602a68a39955 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2ccf7fd91b288f44e945f69dbbd64231 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Tests.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2da0fc39d87e8e94e95ae4021314d0db 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Tests/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 43a1b614a90cebc40b70336bdcf6592b 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Tests/Editor/ApplyArtifactNameCommandTests.cs: -------------------------------------------------------------------------------- 1 | using NUnit.Framework; 2 | 3 | namespace UniModules.UniGame.UniBuild.Tests.Editor 4 | { 5 | [TestFixture] 6 | public class ApplyArtifactNameCommandTests 7 | { 8 | [Test] 9 | public void SimpleArtifactNameTest() 10 | { 11 | //arrange 12 | 13 | //act 14 | 15 | //assert 16 | 17 | } 18 | 19 | [Test] 20 | public void FolderArtifactNameTest() 21 | { 22 | //arrange 23 | 24 | //act 25 | 26 | //assert 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Tests/Editor/ApplyArtifactNameCommandTests.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e02c2c626fc8baa4881a3026553297d1 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Tests/Editor/ApplyLocationByArtifactCommandTests.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b36147b5a6a3496468d0ecb4e7db4314 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Tests/Editor/BuildOptionsCommandsTests.cs: -------------------------------------------------------------------------------- 1 | //using NSubstitute; 2 | //using NUnit.Framework; 3 | //using UniModules.UnityBuild.Editor.ClientBuild; 4 | //using UniModules.UnityBuild.Editor.ClientBuild.Commands.PreBuildCommands; 5 | //using UniModules.UnityBuild.Editor.ClientBuild.Interfaces; 6 | //using UnityEditor; 7 | //using UnityEngine; 8 | // 9 | //[TestFixture] 10 | //public class BuildOptionsCommandsTests : MonoBehaviour 11 | //{ 12 | // 13 | // [Test] 14 | // public void BuildOptionsParsingTest() 15 | // { 16 | // //arrange 17 | // var optionsCommand = new BuildOptionsCommand(); 18 | // var parameterBuildOptions = BuildOptions.None; 19 | // 20 | // var resultBuildOptions = BuildOptions.None; 21 | // resultBuildOptions |= BuildOptions.Development; 22 | // resultBuildOptions |= BuildOptions.ConnectWithProfiler; 23 | // 24 | // var arguments = NSubstitute.Substitute.For(); 25 | // arguments.Contains("-development").Returns(true); 26 | // arguments.Contains("-connectwithprofiler").Returns(true); 27 | // 28 | // var parameters = NSubstitute.Substitute.For(); 29 | // parameters.SetBuildOptions(Arg.Do(x => parameterBuildOptions = x), Arg.Any()); 30 | // 31 | // var configuration = NSubstitute.Substitute.For(); 32 | // configuration.Arguments.Returns(arguments); 33 | // configuration.BuildParameters.Returns(parameters); 34 | // 35 | // //act 36 | // 37 | // optionsCommand.Execute(configuration); 38 | // 39 | // //assert 40 | // Assert.That(resultBuildOptions == parameterBuildOptions); 41 | // 42 | // } 43 | // 44 | // 45 | // 46 | //} 47 | -------------------------------------------------------------------------------- /Tests/Editor/BuildOptionsCommandsTests.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5ffce4beac8f23b408a7c6e2301c1fe8 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Tests/Editor/BuildParametersTests.cs: -------------------------------------------------------------------------------- 1 | //using NUnit.Framework; 2 | // 3 | //namespace UniModules.UnityBuild.Tests.Editor 4 | //{ 5 | // using UnityBuild.Editor.ClientBuild; 6 | // using UnityBuild.Editor.ClientBuild.Interfaces; 7 | // using UnityEditor; 8 | // 9 | // [TestFixture] 10 | // public class BuildParametersTests 11 | // { 12 | // [Test] 13 | // public void ApplyBuildOptionsOverride() 14 | // { 15 | // //arrange 16 | // 17 | // var options1 = BuildOptions.None; 18 | // options1 |= BuildOptions.Development; 19 | // options1 |= BuildOptions.ConnectWithProfiler; 20 | // 21 | // var options2 = BuildOptions.None; 22 | // options2 |= BuildOptions.Reserved1; 23 | // options2 |= BuildOptions.StrictMode; 24 | // 25 | // var buildTarget = BuildTarget.Android; 26 | // var buildTargetGroup = BuildTargetGroup.Android; 27 | // var arguments = NSubstitute.Substitute.For(); 28 | // 29 | // var buildParameters = new BuildParameters(buildTarget,buildTargetGroup,arguments); 30 | // 31 | // //action 32 | // buildParameters.SetBuildOptions(options2,false); 33 | // buildParameters.SetBuildOptions(options1,true); 34 | // 35 | // //assert 36 | // Assert.That(buildParameters.BuildOptions == options1); 37 | // 38 | // } 39 | // 40 | // 41 | // [Test] 42 | // public void ApplyBuildOptionsConcat() 43 | // { 44 | // //arrange 45 | // 46 | // var options1 = BuildOptions.None; 47 | // options1 |= BuildOptions.Development; 48 | // options1 |= BuildOptions.ConnectWithProfiler; 49 | // 50 | // var options2 = BuildOptions.None; 51 | // options2 |= BuildOptions.Reserved1; 52 | // options2 |= BuildOptions.StrictMode; 53 | // 54 | // var resultOptions = options1 | options2; 55 | // 56 | // var buildTarget = BuildTarget.Android; 57 | // var buildTargetGroup = BuildTargetGroup.Android; 58 | // var arguments = NSubstitute.Substitute.For(); 59 | // 60 | // var buildParameters = new BuildParameters(buildTarget,buildTargetGroup,arguments); 61 | // 62 | // //action 63 | // buildParameters.SetBuildOptions(options2,false); 64 | // buildParameters.SetBuildOptions(options1,false); 65 | // 66 | // //assert 67 | // Assert.That(buildParameters.BuildOptions == resultOptions); 68 | // 69 | // } 70 | // } 71 | //} 72 | -------------------------------------------------------------------------------- /Tests/Editor/BuildParametersTests.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bc1b83ef497c26f45903e064173472d7 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Tests/Editor/PipelineCommandsTests.cs: -------------------------------------------------------------------------------- 1 | using NUnit.Framework; 2 | using UniModules.UniGame.UniBuild.Editor.ClientBuild.Generator; 3 | 4 | namespace UniModules.UniGame.UniBuild.Tests.Editor 5 | { 6 | public class PipelineTests 7 | { 8 | [Test] 9 | public void GetCloudMethodsTest() 10 | { 11 | //init 12 | var generator = new CloudBuildMethodsGenerator(); 13 | 14 | //action 15 | var methods = generator.LoadMethodsTemplate(); 16 | 17 | Assert.That(string.IsNullOrEmpty(methods) == false); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Tests/Editor/PipelineCommandsTests.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 62e72b36bcbf27b4786e299320d39ca4 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Tests/Editor/UpdateVersionBuildCommand.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UnityBuild.Tests.Editor 2 | { 3 | using NUnit.Framework; 4 | using global::UniModules.UniGame.UniBuild.Editor.UpdateVersionCommand; 5 | using UnityEditor; 6 | 7 | [TestFixture] 8 | public class UpdateVersionBuildCommand 9 | { 10 | [Test] 11 | public void UpdateAndroidVersionTest() 12 | { 13 | //arrange 14 | var versionProvider = new BuildVersionProvider(); 15 | var buildNumber = 100; 16 | 17 | //act 18 | var version = versionProvider.GetBuildVersion(BuildTarget.Android, "1.0.2", buildNumber); 19 | 20 | //assert 21 | Assert.That(version,Is.EqualTo("1.0.2.100")); 22 | } 23 | 24 | [Test] 25 | public void UpdateIosVersionTest() 26 | { 27 | //arrange 28 | var versionProvider = new BuildVersionProvider(); 29 | var buildNumber = 100; 30 | 31 | //act 32 | var version = versionProvider.GetBuildVersion(BuildTarget.iOS, "1.0.2", buildNumber); 33 | 34 | //assert 35 | Assert.That(version,Is.EqualTo("1.0.100")); 36 | } 37 | 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Tests/Editor/UpdateVersionBuildCommand.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 92237bdbd481e104e97d34d13f666323 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Tests/Editor/VersionCommandTests.cs: -------------------------------------------------------------------------------- 1 | namespace UniModules.UniGame.UnityBuild.Tests.Editor 2 | { 3 | using NUnit.Framework; 4 | using UniModules.UniGame.UniBuild.Editor.UpdateVersionCommand; 5 | using UnityEditor; 6 | 7 | [TestFixture] 8 | public class VersionCommandTests 9 | { 10 | [Test] 11 | [TestCase(BuildTarget.Android, null, ExpectedResult = "1.0.2.100")] 12 | [TestCase(BuildTarget.Android, "master", ExpectedResult = "1.0.2.100")] 13 | [TestCase(BuildTarget.Android, "develop", ExpectedResult = "1.0.2.100 develop")] 14 | [TestCase(BuildTarget.Android, "feature/name", ExpectedResult = "1.0.2.100 name")] 15 | [TestCase(BuildTarget.Android, "custom/name", ExpectedResult = "1.0.2.100 custom/name")] 16 | [TestCase(BuildTarget.iOS, null, ExpectedResult = "1.0.100")] 17 | [TestCase(BuildTarget.iOS, "master", ExpectedResult = "1.0.100")] 18 | [TestCase(BuildTarget.iOS, "develop", ExpectedResult = "1.0.100")] 19 | [TestCase(BuildTarget.iOS, "feature/name", ExpectedResult = "1.0.100")] 20 | [TestCase(BuildTarget.iOS, "custom/name", ExpectedResult = "1.0.100")] 21 | public string GetVersionTest(BuildTarget target, string branch) 22 | { 23 | //arrange 24 | 25 | var buildHandler = new BuildVersionProvider(); 26 | var buildNumber = 100; 27 | var bundleVersion = "1.0.2"; 28 | 29 | //act 30 | 31 | var version = buildHandler.GetBuildVersion(target, bundleVersion, buildNumber, branch); 32 | 33 | //assert 34 | 35 | return version; 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /Tests/Editor/VersionCommandTests.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2709641fee5041a4c9ab16113913eeee 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Tests/unigame.unibuildpipeline.tests.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "unigame.buildpipeline.tests", 3 | "rootNamespace": "", 4 | "references": [ 5 | "GUID:f0321ba97c62c974b82a7fc7c1d544f9", 6 | "GUID:27619889b8ba8c24980f49ee34dbb44a", 7 | "GUID:0acc523941302664db1f4e527237feb3" 8 | ], 9 | "includePlatforms": [ 10 | "Editor" 11 | ], 12 | "excludePlatforms": [], 13 | "allowUnsafeCode": false, 14 | "overrideReferences": false, 15 | "precompiledReferences": [ 16 | "nunit.framework.dll" 17 | ], 18 | "autoReferenced": true, 19 | "defineConstraints": [ 20 | "UNITY_INCLUDE_TESTS" 21 | ], 22 | "versionDefines": [], 23 | "noEngineReferences": false 24 | } -------------------------------------------------------------------------------- /Tests/unigame.unibuildpipeline.tests.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6daf63fd795ec964aaedcfe5b33cb91f 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.unigame.unibuildpipeline", 3 | "author": "UniGame", 4 | "displayName": "UniBuild Scriptable Build Pipeline", 5 | "description": "Configurable unity project build", 6 | "unity": "2022.1", 7 | "version": "2024.0.13", 8 | "homepage": "https://github.com/UniGameTeam/UniGame.UniBuild#readme", 9 | "repository": { 10 | "type": "git", 11 | "url": "https://github.com/UniGameTeam/UniGame.UniBuild" 12 | }, 13 | "keywords": [ 14 | "Build", 15 | "Pipeline", 16 | "CI" 17 | ], 18 | "dependencies": { 19 | "com.unigame.coremodules": "https://github.com/UnioGame/UniGame.CoreModules.git", 20 | "com.unity.test-framework": "1.1.30", 21 | "com.unity.nuget.newtonsoft-json": "3.0.2", 22 | "com.unity.editorcoroutines" : "1.0.0" 23 | } 24 | } -------------------------------------------------------------------------------- /package.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1dd0d0ad751c7ea4abb6ce6a220d0e89 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | --------------------------------------------------------------------------------