// // 이 파일은 UTKImageIconsGenerator에 의해 자동 생성되었습니다. // 직접 수정하지 마세요. Tools > UTK > Image Icons Generator 메뉴로 재생성하세요. // Source: Assets/Resources/Studio/Images // #nullable enable using System.Collections.Generic; using System.Threading; using Cysharp.Threading.Tasks; using UnityEngine; namespace UVC.Studio.Config { /// /// 이미지 아이콘 리소스 경로 상수 클래스입니다. /// 총 34개의 아이콘을 포함합니다. /// /// /// /// // 상수로 리소스 경로 사용 /// string path = StudioUTKImageIcons.Home; /// /// // 동기 Sprite 로드 (캐싱됨) /// Sprite sprite = StudioUTKImageIcons.LoadSprite(StudioUTKImageIcons.Home); /// /// // 비동기 Sprite 로드 (UniTask, 캐싱됨) /// Sprite? sprite = await StudioUTKImageIcons.LoadSpriteAsync(StudioUTKImageIcons.Home, cancellationToken); /// /// // 동기 Texture2D 로드 (캐싱됨) /// Texture2D texture = StudioUTKImageIcons.LoadTexture(StudioUTKImageIcons.Settings); /// /// // 비동기 Texture2D 로드 (UniTask, 캐싱됨) /// Texture2D? texture = await StudioUTKImageIcons.LoadTextureAsync(StudioUTKImageIcons.Settings, cancellationToken); /// /// // 이름으로 Sprite 로드 /// Sprite icon = StudioUTKImageIcons.LoadSpriteByName("home"); /// /// // 이름으로 비동기 Sprite 로드 /// Sprite? icon = await StudioUTKImageIcons.LoadSpriteByNameAsync("home", cancellationToken); /// /// // 이름으로 경로 조회 /// string iconPath = StudioUTKImageIcons.GetPath("settings"); /// /// // 아이콘 존재 여부 확인 /// if (StudioUTKImageIcons.HasIcon("search")) { } /// /// // 전체 아이콘 이름 순회 /// foreach (var name in StudioUTKImageIcons.GetAllIconNames()) { } /// /// // 캐시 클리어 /// StudioUTKImageIcons.ClearCache(); /// /// /// /// UXML에서 사용하기: /// UXML에서 이미지 아이콘을 사용하려면 USS에서 background-image를 설정합니다. /// /// /* USS 파일 */ /// .my-icon { /// width: 24px; /// height: 24px; /// background-image: resource('UIToolkit/Images/icon_setting_22'); /// } /// /// /// /// /// /// C# 코드에서 UXML 요소에 이미지 적용: /// /// var iconElement = root.Q("my-icon"); /// var texture = StudioUTKImageIcons.LoadTextureByName("icon_setting_22"); /// iconElement.style.backgroundImage = new StyleBackground(texture); /// /// Image 요소에서 사용: /// /// var image = root.Q("my-image"); /// image.sprite = StudioUTKImageIcons.LoadSpriteByName("btn_close_16"); /// /// public static class StudioUTKImageIcons { /// logo.png public const string Logo = "Studio/Images/logo"; /// tail_btn_property_close_40.png public const string TailBtnPropertyClose40 = "Studio/Images/tail_btn_property_close_40"; /// tail_btn_property_open_40.png public const string TailBtnPropertyOpen40 = "Studio/Images/tail_btn_property_open_40"; /// toolbar_icon_align_40.png public const string ToolbarIconAlign40 = "Studio/Images/toolbar_icon_align_40"; /// toolbar_icon_align_hc_40.png public const string ToolbarIconAlignHc40 = "Studio/Images/toolbar_icon_align_hc_40"; /// toolbar_icon_align_he_40.png public const string ToolbarIconAlignHe40 = "Studio/Images/toolbar_icon_align_he_40"; /// toolbar_icon_align_hl_40.png public const string ToolbarIconAlignHl40 = "Studio/Images/toolbar_icon_align_hl_40"; /// toolbar_icon_align_hr_40.png public const string ToolbarIconAlignHr40 = "Studio/Images/toolbar_icon_align_hr_40"; /// toolbar_icon_align_vb_40.png public const string ToolbarIconAlignVb40 = "Studio/Images/toolbar_icon_align_vb_40"; /// toolbar_icon_align_ve_40.png public const string ToolbarIconAlignVe40 = "Studio/Images/toolbar_icon_align_ve_40"; /// toolbar_icon_align_vm_40.png public const string ToolbarIconAlignVm40 = "Studio/Images/toolbar_icon_align_vm_40"; /// toolbar_icon_align_vt_40.png public const string ToolbarIconAlignVt40 = "Studio/Images/toolbar_icon_align_vt_40"; /// toolbar_icon_arc_off_40.png public const string ToolbarIconArcOff40 = "Studio/Images/toolbar_icon_arc_off_40"; /// toolbar_icon_arc_on_40.png public const string ToolbarIconArcOn40 = "Studio/Images/toolbar_icon_arc_on_40"; /// toolbar_icon_delete_40.png public const string ToolbarIconDelete40 = "Studio/Images/toolbar_icon_delete_40"; /// toolbar_icon_duplicate_40.png public const string ToolbarIconDuplicate40 = "Studio/Images/toolbar_icon_duplicate_40"; /// toolbar_icon_guide_40.png public const string ToolbarIconGuide40 = "Studio/Images/toolbar_icon_guide_40"; /// toolbar_icon_link_off_40.png public const string ToolbarIconLinkOff40 = "Studio/Images/toolbar_icon_link_off_40"; /// toolbar_icon_link_on_40.png public const string ToolbarIconLinkOn40 = "Studio/Images/toolbar_icon_link_on_40"; /// toolbar_icon_move_off_40.png public const string ToolbarIconMoveOff40 = "Studio/Images/toolbar_icon_move_off_40"; /// toolbar_icon_move_on_40.png public const string ToolbarIconMoveOn40 = "Studio/Images/toolbar_icon_move_on_40"; /// toolbar_icon_node_off_40.png public const string ToolbarIconNodeOff40 = "Studio/Images/toolbar_icon_node_off_40"; /// toolbar_icon_node_on_40.png public const string ToolbarIconNodeOn40 = "Studio/Images/toolbar_icon_node_on_40"; /// toolbar_icon_redo_40.png public const string ToolbarIconRedo40 = "Studio/Images/toolbar_icon_redo_40"; /// toolbar_icon_rotate_off_40.png public const string ToolbarIconRotateOff40 = "Studio/Images/toolbar_icon_rotate_off_40"; /// toolbar_icon_rotate_on_40.png public const string ToolbarIconRotateOn40 = "Studio/Images/toolbar_icon_rotate_on_40"; /// toolbar_icon_save_off_40.png public const string ToolbarIconSaveOff40 = "Studio/Images/toolbar_icon_save_off_40"; /// toolbar_icon_save_on_40.png public const string ToolbarIconSaveOn40 = "Studio/Images/toolbar_icon_save_on_40"; /// toolbar_icon_scale_off_40.png public const string ToolbarIconScaleOff40 = "Studio/Images/toolbar_icon_scale_off_40"; /// toolbar_icon_scale_on_40.png public const string ToolbarIconScaleOn40 = "Studio/Images/toolbar_icon_scale_on_40"; /// toolbar_icon_select_off_40.png public const string ToolbarIconSelectOff40 = "Studio/Images/toolbar_icon_select_off_40"; /// toolbar_icon_select_on_40.png public const string ToolbarIconSelectOn40 = "Studio/Images/toolbar_icon_select_on_40"; /// toolbar_icon_snap_40.png public const string ToolbarIconSnap40 = "Studio/Images/toolbar_icon_snap_40"; /// toolbar_icon_undo_40.png public const string ToolbarIconUndo40 = "Studio/Images/toolbar_icon_undo_40"; #region Lookup & Load private static readonly Dictionary _pathsByName = new() { ["logo"] = "Studio/Images/logo", ["tail_btn_property_close_40"] = "Studio/Images/tail_btn_property_close_40", ["tail_btn_property_open_40"] = "Studio/Images/tail_btn_property_open_40", ["toolbar_icon_align_40"] = "Studio/Images/toolbar_icon_align_40", ["toolbar_icon_align_hc_40"] = "Studio/Images/toolbar_icon_align_hc_40", ["toolbar_icon_align_he_40"] = "Studio/Images/toolbar_icon_align_he_40", ["toolbar_icon_align_hl_40"] = "Studio/Images/toolbar_icon_align_hl_40", ["toolbar_icon_align_hr_40"] = "Studio/Images/toolbar_icon_align_hr_40", ["toolbar_icon_align_vb_40"] = "Studio/Images/toolbar_icon_align_vb_40", ["toolbar_icon_align_ve_40"] = "Studio/Images/toolbar_icon_align_ve_40", ["toolbar_icon_align_vm_40"] = "Studio/Images/toolbar_icon_align_vm_40", ["toolbar_icon_align_vt_40"] = "Studio/Images/toolbar_icon_align_vt_40", ["toolbar_icon_arc_off_40"] = "Studio/Images/toolbar_icon_arc_off_40", ["toolbar_icon_arc_on_40"] = "Studio/Images/toolbar_icon_arc_on_40", ["toolbar_icon_delete_40"] = "Studio/Images/toolbar_icon_delete_40", ["toolbar_icon_duplicate_40"] = "Studio/Images/toolbar_icon_duplicate_40", ["toolbar_icon_guide_40"] = "Studio/Images/toolbar_icon_guide_40", ["toolbar_icon_link_off_40"] = "Studio/Images/toolbar_icon_link_off_40", ["toolbar_icon_link_on_40"] = "Studio/Images/toolbar_icon_link_on_40", ["toolbar_icon_move_off_40"] = "Studio/Images/toolbar_icon_move_off_40", ["toolbar_icon_move_on_40"] = "Studio/Images/toolbar_icon_move_on_40", ["toolbar_icon_node_off_40"] = "Studio/Images/toolbar_icon_node_off_40", ["toolbar_icon_node_on_40"] = "Studio/Images/toolbar_icon_node_on_40", ["toolbar_icon_redo_40"] = "Studio/Images/toolbar_icon_redo_40", ["toolbar_icon_rotate_off_40"] = "Studio/Images/toolbar_icon_rotate_off_40", ["toolbar_icon_rotate_on_40"] = "Studio/Images/toolbar_icon_rotate_on_40", ["toolbar_icon_save_off_40"] = "Studio/Images/toolbar_icon_save_off_40", ["toolbar_icon_save_on_40"] = "Studio/Images/toolbar_icon_save_on_40", ["toolbar_icon_scale_off_40"] = "Studio/Images/toolbar_icon_scale_off_40", ["toolbar_icon_scale_on_40"] = "Studio/Images/toolbar_icon_scale_on_40", ["toolbar_icon_select_off_40"] = "Studio/Images/toolbar_icon_select_off_40", ["toolbar_icon_select_on_40"] = "Studio/Images/toolbar_icon_select_on_40", ["toolbar_icon_snap_40"] = "Studio/Images/toolbar_icon_snap_40", ["toolbar_icon_undo_40"] = "Studio/Images/toolbar_icon_undo_40", }; private static readonly Dictionary _spriteCache = new(); private static readonly Dictionary _textureCache = new(); /// /// 아이콘 이름으로 리소스 경로를 조회합니다. /// /// 아이콘 파일명 (확장자 제외) /// 리소스 경로, 없으면 빈 문자열 public static string GetPath(string iconName) { return _pathsByName.TryGetValue(iconName, out var path) ? path : string.Empty; } /// /// 아이콘이 존재하는지 확인합니다. /// public static bool HasIcon(string iconName) => _pathsByName.ContainsKey(iconName); /// /// 모든 아이콘 이름 목록을 반환합니다. /// public static IEnumerable GetAllIconNames() => _pathsByName.Keys; /// /// 리소스 경로로 아이콘 이름을 조회합니다. /// /// 리소스 경로 (예: Icons/Home) /// 아이콘 이름, 없으면 빈 문자열 public static string GetIconName(string resourcePath) { foreach (var kvp in _pathsByName) { if (kvp.Value == resourcePath) return kvp.Key; } return string.Empty; } /// /// 전체 아이콘 수를 반환합니다. /// public static int Count => 34; /// /// 리소스 경로로 Sprite를 동기로 로드합니다. (캐싱됨) /// /// 리소스 경로 (예: Icons/Home) public static Sprite? LoadSprite(string resourcePath) { if (_spriteCache.TryGetValue(resourcePath, out var cached)) return cached; var sprite = Resources.Load(resourcePath); _spriteCache[resourcePath] = sprite; return sprite; } /// /// 리소스 경로로 Sprite를 비동기로 로드합니다. (캐싱됨) /// /// 리소스 경로 (예: Icons/Home) /// 취소 토큰 public static async UniTask LoadSpriteAsync(string resourcePath, CancellationToken ct = default) { if (_spriteCache.TryGetValue(resourcePath, out var cached)) return cached; var request = Resources.LoadAsync(resourcePath); await request.ToUniTask(cancellationToken: ct); var sprite = request.asset as Sprite; _spriteCache[resourcePath] = sprite; return sprite; } /// /// 리소스 경로로 Texture2D를 동기로 로드합니다. (캐싱됨) /// /// 리소스 경로 (예: Icons/Home) public static Texture2D? LoadTexture(string resourcePath) { if (_textureCache.TryGetValue(resourcePath, out var cached)) return cached; var texture = Resources.Load(resourcePath); _textureCache[resourcePath] = texture; return texture; } /// /// 리소스 경로로 Texture2D를 비동기로 로드합니다. (캐싱됨) /// /// 리소스 경로 (예: Icons/Home) /// 취소 토큰 public static async UniTask LoadTextureAsync(string resourcePath, CancellationToken ct = default) { if (_textureCache.TryGetValue(resourcePath, out var cached)) return cached; var request = Resources.LoadAsync(resourcePath); await request.ToUniTask(cancellationToken: ct); var texture = request.asset as Texture2D; _textureCache[resourcePath] = texture; return texture; } /// /// 아이콘 이름으로 Sprite를 동기로 로드합니다. (캐싱됨) /// /// 아이콘 파일명 (확장자 제외) public static Sprite? LoadSpriteByName(string iconName) { var path = GetPath(iconName); return string.IsNullOrEmpty(path) ? null : LoadSprite(path); } /// /// 아이콘 이름으로 Sprite를 비동기로 로드합니다. (캐싱됨) /// /// 아이콘 파일명 (확장자 제외) /// 취소 토큰 public static async UniTask LoadSpriteByNameAsync(string iconName, CancellationToken ct = default) { var path = GetPath(iconName); return string.IsNullOrEmpty(path) ? null : await LoadSpriteAsync(path, ct); } /// /// 아이콘 이름으로 Texture2D를 동기로 로드합니다. (캐싱됨) /// /// 아이콘 파일명 (확장자 제외) public static Texture2D? LoadTextureByName(string iconName) { var path = GetPath(iconName); return string.IsNullOrEmpty(path) ? null : LoadTexture(path); } /// /// 아이콘 이름으로 Texture2D를 비동기로 로드합니다. (캐싱됨) /// /// 아이콘 파일명 (확장자 제외) /// 취소 토큰 public static async UniTask LoadTextureByNameAsync(string iconName, CancellationToken ct = default) { var path = GetPath(iconName); return string.IsNullOrEmpty(path) ? null : await LoadTextureAsync(path, ct); } /// /// 캐시를 클리어합니다. /// public static void ClearCache() { _spriteCache.Clear(); _textureCache.Clear(); } #endregion } }