#if UNITY_EDITOR using System.Collections.Generic; using System.IO; using TMPro; using UnityEditor; using UnityEditor.SceneManagement; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; /// /// Tools → VRBeatSaber → 전체 자동 설정 /// 씬 생성, 프리팹 생성, Build Settings 등록까지 한 번에 처리 /// public static class VRBeatSaberSceneBuilder { private static GameObject s_cardPrefab; [MenuItem("Tools/VRBeatSaber/전체 자동 설정 (한 번만 실행)")] public static void SetupAll() { if (!EditorUtility.DisplayDialog( "VRBeatSaber 자동 설정", "Intro / SongSelect / SongCreator 씬과\nSongCard 프리팹, Build Settings를 자동으로 설정합니다.\n\n현재 씬이 저장되지 않으면 경고가 뜹니다.", "실행", "취소")) return; if (!EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo()) return; EnsureFolder("Assets/Scenes"); EnsureFolder("Assets/Prefab"); // 1. SongCard 프리팹 s_cardPrefab = CreateSongCardPrefab(); // 2. SongSelect 씬 생성 BuildSongSelectScene(); // 3. SongCreator 씬 생성 BuildSongCreatorScene(); // 4. Intro 씬에 UI 추가 ModifyIntroScene(); // 5. Game 씬 AudioClip 제거 FixGameScene(); // 6. Build Settings 등록 RegisterBuildSettings(); AssetDatabase.Refresh(); EditorUtility.DisplayDialog( "완료", "자동 설정 완료!\n\n" + "[ 직접 해야 할 것 (2가지) ]\n\n" + "1. SongCreator 씬 → [CreatorManager]\n" + " → NasPublisher → Nas Password\n" + " (DSM 비밀번호 입력)\n\n" + "2. Quest에 MP3 파일 넣기\n" + " adb push 파일.mp3\n" + " /sdcard/Android/data/{패키지명}/files/input/", "확인"); } // ══════════════════════════════════════════════════════════ // 1. SongCard 프리팹 // ══════════════════════════════════════════════════════════ private static GameObject CreateSongCardPrefab() { var root = new GameObject("SongCard"); root.AddComponent().color = new Color(0.12f, 0.12f, 0.12f); var btn = root.AddComponent