From f2cd9878cba761c2feccab1502d7e3541ec4a027 Mon Sep 17 00:00:00 2001 From: user Date: Thu, 8 Jan 2026 02:52:43 +0900 Subject: [PATCH] =?UTF-8?q?Feat:=20=EB=B0=B0=EA=B2=BD=20=EC=94=AC=20?= =?UTF-8?q?=EC=9B=B9=20=EC=97=85=EB=A1=9C=EB=93=9C=20=EC=A0=9C=EC=99=B8=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - BackgroundSceneInfo에 excludeFromWeb 플래그 추가 - WebsiteBackgroundExporter에서 제외된 씬 필터링 - BackgroundSceneLoaderWindow UI 개선: - 컨텍스트 메뉴에 '웹사이트 업로드 제외' 토글 추가 - 그리드 뷰: 제외된 씬에 빨간 X 표시 - 리스트 뷰: 제외된 씬에 [제외] 텍스트 표시 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../Settings/BackgroundSceneDatabase.asset | 4 +-- .../Background/BackgroundSceneData.cs | 1 + .../Editor/BackgroundSceneLoaderWindow.cs | 27 +++++++++++++++++++ .../Editor/BackgroundThumbnailCapture.cs | 1 + .../Editor/WebsiteBackgroundExporter.cs | 4 +++ 5 files changed, 35 insertions(+), 2 deletions(-) diff --git a/Assets/Resources/Settings/BackgroundSceneDatabase.asset b/Assets/Resources/Settings/BackgroundSceneDatabase.asset index 6b00577d..7b4ce5f6 100644 --- a/Assets/Resources/Settings/BackgroundSceneDatabase.asset +++ b/Assets/Resources/Settings/BackgroundSceneDatabase.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0dbfdd29052cb97787b02f41647253242e47c1923291b98b966ad0afb1a97043 -size 16054 +oid sha256:b0ec451fb330424e4a92c2bc880c481bbe90c03f627d8e2596f266d60a84efaf +size 16736 diff --git a/Assets/Scripts/Streamingle/StreamingleControl/Background/BackgroundSceneData.cs b/Assets/Scripts/Streamingle/StreamingleControl/Background/BackgroundSceneData.cs index e612aec4..ce474b44 100644 --- a/Assets/Scripts/Streamingle/StreamingleControl/Background/BackgroundSceneData.cs +++ b/Assets/Scripts/Streamingle/StreamingleControl/Background/BackgroundSceneData.cs @@ -15,6 +15,7 @@ namespace Streamingle.Background public string categoryName; // 카테고리 (폴더명, 예: [공용]농구장) public string thumbnailPath; // 썸네일 이미지 경로 public Texture2D thumbnail; // 로드된 썸네일 (런타임용) + public bool excludeFromWeb; // 웹사이트 업로드 제외 여부 public string DisplayName => sceneName; public string Category => ExtractCategory(categoryName); diff --git a/Assets/Scripts/Streamingle/StreamingleControl/Background/Editor/BackgroundSceneLoaderWindow.cs b/Assets/Scripts/Streamingle/StreamingleControl/Background/Editor/BackgroundSceneLoaderWindow.cs index f57bc0b1..7af0caed 100644 --- a/Assets/Scripts/Streamingle/StreamingleControl/Background/Editor/BackgroundSceneLoaderWindow.cs +++ b/Assets/Scripts/Streamingle/StreamingleControl/Background/Editor/BackgroundSceneLoaderWindow.cs @@ -934,6 +934,14 @@ namespace Streamingle.Background.Editor GUI.Label(thumbnailRect, "No\nThumbnail", new GUIStyle(EditorStyles.centeredGreyMiniLabel) { wordWrap = true, alignment = TextAnchor.MiddleCenter }); } + // 웹 제외 표시 + if (sceneInfo.excludeFromWeb) + { + var excludeRect = new Rect(rect.x + THUMBNAIL_SIZE - 22, rect.y + 4, 18, 18); + EditorGUI.DrawRect(excludeRect, new Color(0.8f, 0.2f, 0.2f, 0.9f)); + GUI.Label(excludeRect, "X", new GUIStyle(EditorStyles.boldLabel) { alignment = TextAnchor.MiddleCenter, normal = { textColor = Color.white } }); + } + // 씬 이름 var labelRect = new Rect(rect.x, rect.y + THUMBNAIL_SIZE, THUMBNAIL_SIZE, 25); GUI.Label(labelRect, sceneInfo.sceneName, new GUIStyle(EditorStyles.miniLabel) { alignment = TextAnchor.MiddleCenter, wordWrap = true, clipping = TextClipping.Clip }); @@ -1002,8 +1010,14 @@ namespace Streamingle.Background.Editor // 씬 정보 EditorGUILayout.BeginVertical(); + EditorGUILayout.BeginHorizontal(); var style = isCurrentScene ? EditorStyles.boldLabel : EditorStyles.label; EditorGUILayout.LabelField(sceneInfo.sceneName, style); + if (sceneInfo.excludeFromWeb) + { + GUILayout.Label("[제외]", new GUIStyle(EditorStyles.miniLabel) { normal = { textColor = new Color(0.9f, 0.3f, 0.3f) } }, GUILayout.Width(35)); + } + EditorGUILayout.EndHorizontal(); EditorGUILayout.LabelField(sceneInfo.categoryName, EditorStyles.miniLabel); EditorGUILayout.EndVertical(); @@ -1040,10 +1054,23 @@ namespace Streamingle.Background.Editor menu.AddItem(new GUIContent("폴더 열기"), false, () => RevealInFinder(sceneInfo)); menu.AddSeparator(""); menu.AddItem(new GUIContent("썸네일 생성"), false, () => CreateThumbnail(sceneInfo)); + menu.AddSeparator(""); + menu.AddItem(new GUIContent("웹사이트 업로드 제외"), sceneInfo.excludeFromWeb, () => ToggleExcludeFromWeb(sceneInfo)); menu.ShowAsContext(); } + private void ToggleExcludeFromWeb(BackgroundSceneInfo sceneInfo) + { + sceneInfo.excludeFromWeb = !sceneInfo.excludeFromWeb; + EditorUtility.SetDirty(_database); + AssetDatabase.SaveAssets(); + + string status = sceneInfo.excludeFromWeb ? "제외됨" : "포함됨"; + UnityEngine.Debug.Log($"[BackgroundSceneLoader] '{sceneInfo.sceneName}' 웹 업로드 {status}"); + Repaint(); + } + private void LoadScene(BackgroundSceneInfo sceneInfo, LoadSceneMode mode = LoadSceneMode.Additive) { if (_isLoading) diff --git a/Assets/Scripts/Streamingle/StreamingleControl/Background/Editor/BackgroundThumbnailCapture.cs b/Assets/Scripts/Streamingle/StreamingleControl/Background/Editor/BackgroundThumbnailCapture.cs index 2cef590d..e7f89e31 100644 --- a/Assets/Scripts/Streamingle/StreamingleControl/Background/Editor/BackgroundThumbnailCapture.cs +++ b/Assets/Scripts/Streamingle/StreamingleControl/Background/Editor/BackgroundThumbnailCapture.cs @@ -1,3 +1,4 @@ +using System; using System.IO; using UnityEditor; using UnityEngine; diff --git a/Assets/Scripts/Streamingle/StreamingleControl/Background/Editor/WebsiteBackgroundExporter.cs b/Assets/Scripts/Streamingle/StreamingleControl/Background/Editor/WebsiteBackgroundExporter.cs index 40eb5b4c..6d3cda98 100644 --- a/Assets/Scripts/Streamingle/StreamingleControl/Background/Editor/WebsiteBackgroundExporter.cs +++ b/Assets/Scripts/Streamingle/StreamingleControl/Background/Editor/WebsiteBackgroundExporter.cs @@ -191,6 +191,10 @@ namespace Streamingle.Background.Editor foreach (var sceneInfo in _database.scenes) { + // 웹 업로드 제외된 씬은 스킵 + if (sceneInfo.excludeFromWeb) + continue; + var item = new WebsiteBackgroundItem { sceneName = sceneInfo.sceneName,