배경 씬 로더 기능 개선: - BackgroundSceneDatabase 에셋 추가 - 플레이 모드 언로드 시 MarkSceneDirty 오류 수정 - Directional Light 및 NiloToonOverrider 백업/복원 기능 - 빌드 세팅 자동 추가 기능 배경 폴더 구조 정리: - [초금비]방 → [공용]방 이름 변경 - [공용]루프탑 카페 씬 구조 정리 (Day/Night 씬 통합) - 미사용 배경 삭제: [공용]교실, [공용]농구장 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
84 lines
2.7 KiB
C#
84 lines
2.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace Streamingle.Background
|
|
{
|
|
/// <summary>
|
|
/// 배경 씬 정보를 담는 데이터 클래스
|
|
/// </summary>
|
|
[Serializable]
|
|
public class BackgroundSceneInfo
|
|
{
|
|
public string sceneName; // 씬 파일 이름 (확장자 제외)
|
|
public string scenePath; // 씬 파일 전체 경로 (Assets/...)
|
|
public string categoryName; // 카테고리 (폴더명, 예: [공용]농구장)
|
|
public string thumbnailPath; // 썸네일 이미지 경로
|
|
public Texture2D thumbnail; // 로드된 썸네일 (런타임용)
|
|
|
|
public string DisplayName => sceneName;
|
|
public string Category => ExtractCategory(categoryName);
|
|
|
|
private static string ExtractCategory(string folderName)
|
|
{
|
|
// [공용], [야모], [아이시아] 등 카테고리 추출
|
|
if (string.IsNullOrEmpty(folderName)) return "기타";
|
|
|
|
int start = folderName.IndexOf('[');
|
|
int end = folderName.IndexOf(']');
|
|
|
|
if (start >= 0 && end > start)
|
|
{
|
|
return folderName.Substring(start + 1, end - start - 1);
|
|
}
|
|
|
|
return "기타";
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 배경 씬 데이터를 저장하는 ScriptableObject
|
|
/// </summary>
|
|
[CreateAssetMenu(fileName = "BackgroundSceneDatabase", menuName = "Streamingle/Background Scene Database")]
|
|
public class BackgroundSceneDatabase : ScriptableObject
|
|
{
|
|
public List<BackgroundSceneInfo> scenes = new List<BackgroundSceneInfo>();
|
|
|
|
/// <summary>
|
|
/// 카테고리별로 씬 목록 반환
|
|
/// </summary>
|
|
public Dictionary<string, List<BackgroundSceneInfo>> GetScenesByCategory()
|
|
{
|
|
var result = new Dictionary<string, List<BackgroundSceneInfo>>();
|
|
|
|
foreach (var scene in scenes)
|
|
{
|
|
string category = scene.Category;
|
|
if (!result.ContainsKey(category))
|
|
{
|
|
result[category] = new List<BackgroundSceneInfo>();
|
|
}
|
|
result[category].Add(scene);
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 씬 이름으로 검색
|
|
/// </summary>
|
|
public BackgroundSceneInfo FindByName(string sceneName)
|
|
{
|
|
return scenes.Find(s => s.sceneName == sceneName);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 씬 경로로 검색
|
|
/// </summary>
|
|
public BackgroundSceneInfo FindByPath(string scenePath)
|
|
{
|
|
return scenes.Find(s => s.scenePath == scenePath);
|
|
}
|
|
}
|
|
}
|