Feat: 배경 씬 웹 업로드 제외 기능 추가
- BackgroundSceneInfo에 excludeFromWeb 플래그 추가 - WebsiteBackgroundExporter에서 제외된 씬 필터링 - BackgroundSceneLoaderWindow UI 개선: - 컨텍스트 메뉴에 '웹사이트 업로드 제외' 토글 추가 - 그리드 뷰: 제외된 씬에 빨간 X 표시 - 리스트 뷰: 제외된 씬에 [제외] 텍스트 표시 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
a6236d887c
commit
f2cd9878cb
BIN
Assets/Resources/Settings/BackgroundSceneDatabase.asset
(Stored with Git LFS)
BIN
Assets/Resources/Settings/BackgroundSceneDatabase.asset
(Stored with Git LFS)
Binary file not shown.
@ -15,6 +15,7 @@ namespace Streamingle.Background
|
|||||||
public string categoryName; // 카테고리 (폴더명, 예: [공용]농구장)
|
public string categoryName; // 카테고리 (폴더명, 예: [공용]농구장)
|
||||||
public string thumbnailPath; // 썸네일 이미지 경로
|
public string thumbnailPath; // 썸네일 이미지 경로
|
||||||
public Texture2D thumbnail; // 로드된 썸네일 (런타임용)
|
public Texture2D thumbnail; // 로드된 썸네일 (런타임용)
|
||||||
|
public bool excludeFromWeb; // 웹사이트 업로드 제외 여부
|
||||||
|
|
||||||
public string DisplayName => sceneName;
|
public string DisplayName => sceneName;
|
||||||
public string Category => ExtractCategory(categoryName);
|
public string Category => ExtractCategory(categoryName);
|
||||||
|
|||||||
@ -934,6 +934,14 @@ namespace Streamingle.Background.Editor
|
|||||||
GUI.Label(thumbnailRect, "No\nThumbnail", new GUIStyle(EditorStyles.centeredGreyMiniLabel) { wordWrap = true, alignment = TextAnchor.MiddleCenter });
|
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);
|
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 });
|
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.BeginVertical();
|
||||||
|
|
||||||
|
EditorGUILayout.BeginHorizontal();
|
||||||
var style = isCurrentScene ? EditorStyles.boldLabel : EditorStyles.label;
|
var style = isCurrentScene ? EditorStyles.boldLabel : EditorStyles.label;
|
||||||
EditorGUILayout.LabelField(sceneInfo.sceneName, style);
|
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.LabelField(sceneInfo.categoryName, EditorStyles.miniLabel);
|
||||||
|
|
||||||
EditorGUILayout.EndVertical();
|
EditorGUILayout.EndVertical();
|
||||||
@ -1040,10 +1054,23 @@ namespace Streamingle.Background.Editor
|
|||||||
menu.AddItem(new GUIContent("폴더 열기"), false, () => RevealInFinder(sceneInfo));
|
menu.AddItem(new GUIContent("폴더 열기"), false, () => RevealInFinder(sceneInfo));
|
||||||
menu.AddSeparator("");
|
menu.AddSeparator("");
|
||||||
menu.AddItem(new GUIContent("썸네일 생성"), false, () => CreateThumbnail(sceneInfo));
|
menu.AddItem(new GUIContent("썸네일 생성"), false, () => CreateThumbnail(sceneInfo));
|
||||||
|
menu.AddSeparator("");
|
||||||
|
menu.AddItem(new GUIContent("웹사이트 업로드 제외"), sceneInfo.excludeFromWeb, () => ToggleExcludeFromWeb(sceneInfo));
|
||||||
|
|
||||||
menu.ShowAsContext();
|
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)
|
private void LoadScene(BackgroundSceneInfo sceneInfo, LoadSceneMode mode = LoadSceneMode.Additive)
|
||||||
{
|
{
|
||||||
if (_isLoading)
|
if (_isLoading)
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using UnityEditor;
|
using UnityEditor;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|||||||
@ -191,6 +191,10 @@ namespace Streamingle.Background.Editor
|
|||||||
|
|
||||||
foreach (var sceneInfo in _database.scenes)
|
foreach (var sceneInfo in _database.scenes)
|
||||||
{
|
{
|
||||||
|
// 웹 업로드 제외된 씬은 스킵
|
||||||
|
if (sceneInfo.excludeFromWeb)
|
||||||
|
continue;
|
||||||
|
|
||||||
var item = new WebsiteBackgroundItem
|
var item = new WebsiteBackgroundItem
|
||||||
{
|
{
|
||||||
sceneName = sceneInfo.sceneName,
|
sceneName = sceneInfo.sceneName,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user