Unity 6의 Build Profile (예: Android Debug, Release, iOS Dev 등)을 코드로 선택하거나 전환
카테고리 없음 2025. 4. 8. 13:301. Build Configuration 사용하기 (com.unity.build)
Unity 2023+에서 도입된 Build Configuration (빌드 구성) 시스템을 Unity 6에서도 사용 가능할 것으로 보입니다. 이 시스템은 ScriptableObject 형태의 빌드 프로파일을 지원하며, 이를 코드로 제어할 수 있습니다.
🔧 예시: Build Configuration을 로드하고 빌드
csharp
복사편집
using UnityEditor; using Unity.Build; using Unity.Build.Editor; public class BuildFromCode { [MenuItem("Build/Build Selected Profile")] public static void BuildSelectedProfile() { // Build Configuration 에셋 경로 var config = AssetDatabase.LoadAssetAtPath<BuildConfiguration>("Assets/BuildConfigurations/MyAndroidDebug.buildconfiguration"); if (config != null) { var result = config.Build(); if (result.Succeeded) UnityEngine.Debug.Log("Build succeeded: " + result.OutputDirectory); else UnityEngine.Debug.LogError("Build failed!"); } else { UnityEngine.Debug.LogError("Build Configuration not found!"); } } }
2. 기존 방식: BuildPipeline.BuildPlayer + EditorUserBuildSettings
Build Profiles가 복잡하게 연결되지 않은 단순 빌드라면, 여전히 BuildPipeline.BuildPlayer로 해결 가능하며, 플랫폼/옵션을 코드로 설정할 수 있습니다.
📦 예시: Android Release 빌드 설정
csharp
복사편집
using UnityEditor; using UnityEditor.Build.Reporting; using UnityEngine; public class BuildScript { [MenuItem("Build/Build Android Release")] public static void BuildAndroid() { EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.Android, BuildTarget.Android); EditorUserBuildSettings.development = false; var options = new BuildPlayerOptions { scenes = new[] { "Assets/Scenes/Main.unity" }, locationPathName = "Builds/Android/MyApp.apk", target = BuildTarget.Android, options = BuildOptions.None }; BuildReport report = BuildPipeline.BuildPlayer(options); if (report.summary.result == BuildResult.Succeeded) { Debug.Log("Build succeeded."); } else { Debug.LogError("Build failed."); } } }
3. Build Profiles 직접 제어 (Build Configuration API 내부 구조 활용)
Build Configuration이 내부적으로 ScriptableObject이므로, 여러 개의 .buildconfiguration 파일을 관리하고 선택적으로 사용하면 사실상 Build Profile 선택 기능을 구현할 수 있습니다.
csharp
복사편집
var allConfigs = AssetDatabase.FindAssets("t:BuildConfiguration") .Select(guid => AssetDatabase.LoadAssetAtPath<BuildConfiguration>(AssetDatabase.GUIDToAssetPath(guid))) .ToList();
필요한 구성만 필터링해서 사용할 수 있습니다.
✅ 요약
방법설명유용성
Build Configuration API | .buildconfiguration 파일을 코드에서 불러와서 빌드 | 권장 (Unity 6 대응) |
BuildPipeline.BuildPlayer | 커스텀 코드 기반 빌드 수행 | 단순한 빌드에 적합 |
EditorUserBuildSettings | 플랫폼 전환, 개발모드 설정 등 제어 | 보조적으로 사용 가능 |