// // 이 파일은 UTKImageIconsGenerator에 의해 자동 생성되었습니다. // 직접 수정하지 마세요. Tools > UTK > Image Icons Generator 메뉴로 재생성하세요. // Source: Assets/Resources/UIToolkit/Images // #nullable enable using System.Collections.Generic; using System.Threading; using Cysharp.Threading.Tasks; using UnityEngine; namespace UVC.UIToolkit { /// /// 이미지 아이콘 리소스 경로 상수 클래스입니다. /// 총 41개의 아이콘을 포함합니다. /// /// /// /// // 상수로 리소스 경로 사용 /// string path = UTKImageIcons.Home; /// /// // 동기 Sprite 로드 (캐싱됨) /// Sprite sprite = UTKImageIcons.LoadSprite(UTKImageIcons.Home); /// /// // 비동기 Sprite 로드 (UniTask, 캐싱됨) /// Sprite? sprite = await UTKImageIcons.LoadSpriteAsync(UTKImageIcons.Home, cancellationToken); /// /// // 동기 Texture2D 로드 (캐싱됨) /// Texture2D texture = UTKImageIcons.LoadTexture(UTKImageIcons.Settings); /// /// // 비동기 Texture2D 로드 (UniTask, 캐싱됨) /// Texture2D? texture = await UTKImageIcons.LoadTextureAsync(UTKImageIcons.Settings, cancellationToken); /// /// // 이름으로 Sprite 로드 /// Sprite icon = UTKImageIcons.LoadSpriteByName("home"); /// /// // 이름으로 비동기 Sprite 로드 /// Sprite? icon = await UTKImageIcons.LoadSpriteByNameAsync("home", cancellationToken); /// /// // 이름으로 경로 조회 /// string iconPath = UTKImageIcons.GetPath("settings"); /// /// // 아이콘 존재 여부 확인 /// if (UTKImageIcons.HasIcon("search")) { } /// /// // 전체 아이콘 이름 순회 /// foreach (var name in UTKImageIcons.GetAllIconNames()) { } /// /// // 캐시 클리어 /// UTKImageIcons.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 = UTKImageIcons.LoadTextureByName("icon_setting_22"); /// iconElement.style.backgroundImage = new StyleBackground(texture); /// /// Image 요소에서 사용: /// /// var image = root.Q("my-image"); /// image.sprite = UTKImageIcons.LoadSpriteByName("btn_close_16"); /// /// public static class UTKImageIcons { /// btn_cancel_64.png public const string BtnCancel64 = "UIToolkit/Images/btn_cancel_64"; /// btn_close_16.png public const string BtnClose16 = "UIToolkit/Images/btn_close_16"; /// btn_close_22.png public const string BtnClose22 = "UIToolkit/Images/btn_close_22"; /// cursor_arc_32.png public const string CursorArc32 = "UIToolkit/Images/cursor_arc_32"; /// cursor_ask_32.png public const string CursorAsk32 = "UIToolkit/Images/cursor_ask_32"; /// cursor_context_menu_32.png public const string CursorContextMenu32 = "UIToolkit/Images/cursor_context_menu_32"; /// cursor_copy_32.png public const string CursorCopy32 = "UIToolkit/Images/cursor_copy_32"; /// cursor_default_black_32.png public const string CursorDefaultBlack32 = "UIToolkit/Images/cursor_default_black_32"; /// cursor_default_white_32.png public const string CursorDefaultWhite32 = "UIToolkit/Images/cursor_default_white_32"; /// cursor_export_32.png public const string CursorExport32 = "UIToolkit/Images/cursor_export_32"; /// cursor_grabbing_32.png public const string CursorGrabbing32 = "UIToolkit/Images/cursor_grabbing_32"; /// cursor_hand_32.png public const string CursorHand32 = "UIToolkit/Images/cursor_hand_32"; /// cursor_link_32.png public const string CursorLink32 = "UIToolkit/Images/cursor_link_32"; /// cursor_move_32.png public const string CursorMove32 = "UIToolkit/Images/cursor_move_32"; /// cursor_node_32.png public const string CursorNode32 = "UIToolkit/Images/cursor_node_32"; /// cursor_point_white_32.png public const string CursorPointWhite32 = "UIToolkit/Images/cursor_point_white_32"; /// cursor_resize_col_32.png public const string CursorResizeCol32 = "UIToolkit/Images/cursor_resize_col_32"; /// cursor_resize_down_32.png public const string CursorResizeDown32 = "UIToolkit/Images/cursor_resize_down_32"; /// cursor_resize_h_32.png public const string CursorResizeH32 = "UIToolkit/Images/cursor_resize_h_32"; /// cursor_resize_left_32.png public const string CursorResizeLeft32 = "UIToolkit/Images/cursor_resize_left_32"; /// cursor_resize_right_32.png public const string CursorResizeRight32 = "UIToolkit/Images/cursor_resize_right_32"; /// cursor_resize_row_32.png public const string CursorResizeRow32 = "UIToolkit/Images/cursor_resize_row_32"; /// cursor_resize_tlbr_32.png public const string CursorResizeTlbr32 = "UIToolkit/Images/cursor_resize_tlbr_32"; /// cursor_resize_trbl_32.png public const string CursorResizeTrbl32 = "UIToolkit/Images/cursor_resize_trbl_32"; /// cursor_resize_up_32.png public const string CursorResizeUp32 = "UIToolkit/Images/cursor_resize_up_32"; /// cursor_resize_v_32.png public const string CursorResizeV32 = "UIToolkit/Images/cursor_resize_v_32"; /// cursor_rotate_bottom_left_32.png public const string CursorRotateBottomLeft32 = "UIToolkit/Images/cursor_rotate_bottom_left_32"; /// cursor_rotate_bottom_right_32.png public const string CursorRotateBottomRight32 = "UIToolkit/Images/cursor_rotate_bottom_right_32"; /// cursor_rotate_top_left_32.png public const string CursorRotateTopLeft32 = "UIToolkit/Images/cursor_rotate_top_left_32"; /// cursor_rotate_top_right_32.png public const string CursorRotateTopRight32 = "UIToolkit/Images/cursor_rotate_top_right_32"; /// cursor_select_32.png public const string CursorSelect32 = "UIToolkit/Images/cursor_select_32"; /// cursor_wait_32.png public const string CursorWait32 = "UIToolkit/Images/cursor_wait_32"; /// cursor_zoom_in_32.png public const string CursorZoomIn32 = "UIToolkit/Images/cursor_zoom_in_32"; /// cursor_zoom_out_32.png public const string CursorZoomOut32 = "UIToolkit/Images/cursor_zoom_out_32"; /// icon_down_20x16.png public const string IconDown20x16 = "UIToolkit/Images/icon_down_20x16"; /// icon_down_22.png public const string IconDown22 = "UIToolkit/Images/icon_down_22"; /// icon_eye_22x16.png public const string IconEye22x16 = "UIToolkit/Images/icon_eye_22x16"; /// icon_eye_close_22x16.png public const string IconEyeClose22x16 = "UIToolkit/Images/icon_eye_close_22x16"; /// icon_right_22.png public const string IconRight22 = "UIToolkit/Images/icon_right_22"; /// icon_search_22x16.png public const string IconSearch22x16 = "UIToolkit/Images/icon_search_22x16"; /// icon_setting_22.png public const string IconSetting22 = "UIToolkit/Images/icon_setting_22"; #region Lookup & Load private static readonly Dictionary _pathsByName = new() { ["btn_cancel_64"] = "UIToolkit/Images/btn_cancel_64", ["btn_close_16"] = "UIToolkit/Images/btn_close_16", ["btn_close_22"] = "UIToolkit/Images/btn_close_22", ["cursor_arc_32"] = "UIToolkit/Images/cursor_arc_32", ["cursor_ask_32"] = "UIToolkit/Images/cursor_ask_32", ["cursor_context_menu_32"] = "UIToolkit/Images/cursor_context_menu_32", ["cursor_copy_32"] = "UIToolkit/Images/cursor_copy_32", ["cursor_default_black_32"] = "UIToolkit/Images/cursor_default_black_32", ["cursor_default_white_32"] = "UIToolkit/Images/cursor_default_white_32", ["cursor_export_32"] = "UIToolkit/Images/cursor_export_32", ["cursor_grabbing_32"] = "UIToolkit/Images/cursor_grabbing_32", ["cursor_hand_32"] = "UIToolkit/Images/cursor_hand_32", ["cursor_link_32"] = "UIToolkit/Images/cursor_link_32", ["cursor_move_32"] = "UIToolkit/Images/cursor_move_32", ["cursor_node_32"] = "UIToolkit/Images/cursor_node_32", ["cursor_point_white_32"] = "UIToolkit/Images/cursor_point_white_32", ["cursor_resize_col_32"] = "UIToolkit/Images/cursor_resize_col_32", ["cursor_resize_down_32"] = "UIToolkit/Images/cursor_resize_down_32", ["cursor_resize_h_32"] = "UIToolkit/Images/cursor_resize_h_32", ["cursor_resize_left_32"] = "UIToolkit/Images/cursor_resize_left_32", ["cursor_resize_right_32"] = "UIToolkit/Images/cursor_resize_right_32", ["cursor_resize_row_32"] = "UIToolkit/Images/cursor_resize_row_32", ["cursor_resize_tlbr_32"] = "UIToolkit/Images/cursor_resize_tlbr_32", ["cursor_resize_trbl_32"] = "UIToolkit/Images/cursor_resize_trbl_32", ["cursor_resize_up_32"] = "UIToolkit/Images/cursor_resize_up_32", ["cursor_resize_v_32"] = "UIToolkit/Images/cursor_resize_v_32", ["cursor_rotate_bottom_left_32"] = "UIToolkit/Images/cursor_rotate_bottom_left_32", ["cursor_rotate_bottom_right_32"] = "UIToolkit/Images/cursor_rotate_bottom_right_32", ["cursor_rotate_top_left_32"] = "UIToolkit/Images/cursor_rotate_top_left_32", ["cursor_rotate_top_right_32"] = "UIToolkit/Images/cursor_rotate_top_right_32", ["cursor_select_32"] = "UIToolkit/Images/cursor_select_32", ["cursor_wait_32"] = "UIToolkit/Images/cursor_wait_32", ["cursor_zoom_in_32"] = "UIToolkit/Images/cursor_zoom_in_32", ["cursor_zoom_out_32"] = "UIToolkit/Images/cursor_zoom_out_32", ["icon_down_20x16"] = "UIToolkit/Images/icon_down_20x16", ["icon_down_22"] = "UIToolkit/Images/icon_down_22", ["icon_eye_22x16"] = "UIToolkit/Images/icon_eye_22x16", ["icon_eye_close_22x16"] = "UIToolkit/Images/icon_eye_close_22x16", ["icon_right_22"] = "UIToolkit/Images/icon_right_22", ["icon_search_22x16"] = "UIToolkit/Images/icon_search_22x16", ["icon_setting_22"] = "UIToolkit/Images/icon_setting_22", }; 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); /// /// 리소스 경로로 아이콘 이름을 조회합니다. /// /// 리소스 경로 (예: 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 IEnumerable GetAllIconNames() => _pathsByName.Keys; /// /// 전체 아이콘 수를 반환합니다. /// public static int Count => 41; /// /// 리소스 경로로 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 } }