Files

374 lines
18 KiB
C#

// <auto-generated>
// 이 파일은 UTKImageIconsGenerator에 의해 자동 생성되었습니다.
// 직접 수정하지 마세요. Tools > UTK > Image Icons Generator 메뉴로 재생성하세요.
// Source: Assets/Resources/UIToolkit/Images
// </auto-generated>
#nullable enable
using System.Collections.Generic;
using System.Threading;
using Cysharp.Threading.Tasks;
using UnityEngine;
namespace UVC.UIToolkit
{
/// <summary>
/// 이미지 아이콘 리소스 경로 상수 클래스입니다.
/// 총 41개의 아이콘을 포함합니다.
/// </summary>
/// <example>
/// <code>
/// // 상수로 리소스 경로 사용
/// 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();
/// </code>
/// </example>
/// <remarks>
/// <para><b>UXML에서 사용하기:</b></para>
/// <para>UXML에서 이미지 아이콘을 사용하려면 USS에서 background-image를 설정합니다.</para>
/// <code>
/// /* USS 파일 */
/// .my-icon {
/// width: 24px;
/// height: 24px;
/// background-image: resource('UIToolkit/Images/icon_setting_22');
/// }
/// </code>
/// <code>
/// <!-- UXML 파일 -->
/// <VisualElement class="my-icon" />
/// </code>
/// <para><b>C# 코드에서 UXML 요소에 이미지 적용:</b></para>
/// <code>
/// var iconElement = root.Q<VisualElement>("my-icon");
/// var texture = UTKImageIcons.LoadTextureByName("icon_setting_22");
/// iconElement.style.backgroundImage = new StyleBackground(texture);
/// </code>
/// <para><b>Image 요소에서 사용:</b></para>
/// <code>
/// var image = root.Q<Image>("my-image");
/// image.sprite = UTKImageIcons.LoadSpriteByName("btn_close_16");
/// </code>
/// </remarks>
public static class UTKImageIcons
{
/// <summary>btn_cancel_64.png</summary>
public const string BtnCancel64 = "UIToolkit/Images/btn_cancel_64";
/// <summary>btn_close_16.png</summary>
public const string BtnClose16 = "UIToolkit/Images/btn_close_16";
/// <summary>btn_close_22.png</summary>
public const string BtnClose22 = "UIToolkit/Images/btn_close_22";
/// <summary>cursor_arc_32.png</summary>
public const string CursorArc32 = "UIToolkit/Images/cursor_arc_32";
/// <summary>cursor_ask_32.png</summary>
public const string CursorAsk32 = "UIToolkit/Images/cursor_ask_32";
/// <summary>cursor_context_menu_32.png</summary>
public const string CursorContextMenu32 = "UIToolkit/Images/cursor_context_menu_32";
/// <summary>cursor_copy_32.png</summary>
public const string CursorCopy32 = "UIToolkit/Images/cursor_copy_32";
/// <summary>cursor_default_black_32.png</summary>
public const string CursorDefaultBlack32 = "UIToolkit/Images/cursor_default_black_32";
/// <summary>cursor_default_white_32.png</summary>
public const string CursorDefaultWhite32 = "UIToolkit/Images/cursor_default_white_32";
/// <summary>cursor_export_32.png</summary>
public const string CursorExport32 = "UIToolkit/Images/cursor_export_32";
/// <summary>cursor_grabbing_32.png</summary>
public const string CursorGrabbing32 = "UIToolkit/Images/cursor_grabbing_32";
/// <summary>cursor_hand_32.png</summary>
public const string CursorHand32 = "UIToolkit/Images/cursor_hand_32";
/// <summary>cursor_link_32.png</summary>
public const string CursorLink32 = "UIToolkit/Images/cursor_link_32";
/// <summary>cursor_move_32.png</summary>
public const string CursorMove32 = "UIToolkit/Images/cursor_move_32";
/// <summary>cursor_node_32.png</summary>
public const string CursorNode32 = "UIToolkit/Images/cursor_node_32";
/// <summary>cursor_point_white_32.png</summary>
public const string CursorPointWhite32 = "UIToolkit/Images/cursor_point_white_32";
/// <summary>cursor_resize_col_32.png</summary>
public const string CursorResizeCol32 = "UIToolkit/Images/cursor_resize_col_32";
/// <summary>cursor_resize_down_32.png</summary>
public const string CursorResizeDown32 = "UIToolkit/Images/cursor_resize_down_32";
/// <summary>cursor_resize_h_32.png</summary>
public const string CursorResizeH32 = "UIToolkit/Images/cursor_resize_h_32";
/// <summary>cursor_resize_left_32.png</summary>
public const string CursorResizeLeft32 = "UIToolkit/Images/cursor_resize_left_32";
/// <summary>cursor_resize_right_32.png</summary>
public const string CursorResizeRight32 = "UIToolkit/Images/cursor_resize_right_32";
/// <summary>cursor_resize_row_32.png</summary>
public const string CursorResizeRow32 = "UIToolkit/Images/cursor_resize_row_32";
/// <summary>cursor_resize_tlbr_32.png</summary>
public const string CursorResizeTlbr32 = "UIToolkit/Images/cursor_resize_tlbr_32";
/// <summary>cursor_resize_trbl_32.png</summary>
public const string CursorResizeTrbl32 = "UIToolkit/Images/cursor_resize_trbl_32";
/// <summary>cursor_resize_up_32.png</summary>
public const string CursorResizeUp32 = "UIToolkit/Images/cursor_resize_up_32";
/// <summary>cursor_resize_v_32.png</summary>
public const string CursorResizeV32 = "UIToolkit/Images/cursor_resize_v_32";
/// <summary>cursor_rotate_bottom_left_32.png</summary>
public const string CursorRotateBottomLeft32 = "UIToolkit/Images/cursor_rotate_bottom_left_32";
/// <summary>cursor_rotate_bottom_right_32.png</summary>
public const string CursorRotateBottomRight32 = "UIToolkit/Images/cursor_rotate_bottom_right_32";
/// <summary>cursor_rotate_top_left_32.png</summary>
public const string CursorRotateTopLeft32 = "UIToolkit/Images/cursor_rotate_top_left_32";
/// <summary>cursor_rotate_top_right_32.png</summary>
public const string CursorRotateTopRight32 = "UIToolkit/Images/cursor_rotate_top_right_32";
/// <summary>cursor_select_32.png</summary>
public const string CursorSelect32 = "UIToolkit/Images/cursor_select_32";
/// <summary>cursor_wait_32.png</summary>
public const string CursorWait32 = "UIToolkit/Images/cursor_wait_32";
/// <summary>cursor_zoom_in_32.png</summary>
public const string CursorZoomIn32 = "UIToolkit/Images/cursor_zoom_in_32";
/// <summary>cursor_zoom_out_32.png</summary>
public const string CursorZoomOut32 = "UIToolkit/Images/cursor_zoom_out_32";
/// <summary>icon_down_20x16.png</summary>
public const string IconDown20x16 = "UIToolkit/Images/icon_down_20x16";
/// <summary>icon_down_22.png</summary>
public const string IconDown22 = "UIToolkit/Images/icon_down_22";
/// <summary>icon_eye_22x16.png</summary>
public const string IconEye22x16 = "UIToolkit/Images/icon_eye_22x16";
/// <summary>icon_eye_close_22x16.png</summary>
public const string IconEyeClose22x16 = "UIToolkit/Images/icon_eye_close_22x16";
/// <summary>icon_right_22.png</summary>
public const string IconRight22 = "UIToolkit/Images/icon_right_22";
/// <summary>icon_search_22x16.png</summary>
public const string IconSearch22x16 = "UIToolkit/Images/icon_search_22x16";
/// <summary>icon_setting_22.png</summary>
public const string IconSetting22 = "UIToolkit/Images/icon_setting_22";
#region Lookup & Load
private static readonly Dictionary<string, string> _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<string, Sprite?> _spriteCache = new();
private static readonly Dictionary<string, Texture2D?> _textureCache = new();
/// <summary>
/// 아이콘 이름으로 리소스 경로를 조회합니다.
/// </summary>
/// <param name="iconName">아이콘 파일명 (확장자 제외)</param>
/// <returns>리소스 경로, 없으면 빈 문자열</returns>
public static string GetPath(string iconName)
{
return _pathsByName.TryGetValue(iconName, out var path) ? path : string.Empty;
}
/// <summary>
/// 아이콘이 존재하는지 확인합니다.
/// </summary>
public static bool HasIcon(string iconName) => _pathsByName.ContainsKey(iconName);
/// <summary>
/// 리소스 경로로 아이콘 이름을 조회합니다.
/// </summary>
/// <param name="resourcePath">리소스 경로 (예: Icons/Home)</param>
/// <returns>아이콘 이름, 없으면 빈 문자열</returns>
public static string GetIconName(string resourcePath)
{
foreach (var kvp in _pathsByName)
{
if (kvp.Value == resourcePath) return kvp.Key;
}
return string.Empty;
}
/// <summary>
/// 모든 아이콘 이름 목록을 반환합니다.
/// </summary>
public static IEnumerable<string> GetAllIconNames() => _pathsByName.Keys;
/// <summary>
/// 전체 아이콘 수를 반환합니다.
/// </summary>
public static int Count => 41;
/// <summary>
/// 리소스 경로로 Sprite를 동기로 로드합니다. (캐싱됨)
/// </summary>
/// <param name="resourcePath">리소스 경로 (예: Icons/Home)</param>
public static Sprite? LoadSprite(string resourcePath)
{
if (_spriteCache.TryGetValue(resourcePath, out var cached))
return cached;
var sprite = Resources.Load<Sprite>(resourcePath);
_spriteCache[resourcePath] = sprite;
return sprite;
}
/// <summary>
/// 리소스 경로로 Sprite를 비동기로 로드합니다. (캐싱됨)
/// </summary>
/// <param name="resourcePath">리소스 경로 (예: Icons/Home)</param>
/// <param name="ct">취소 토큰</param>
public static async UniTask<Sprite?> LoadSpriteAsync(string resourcePath, CancellationToken ct = default)
{
if (_spriteCache.TryGetValue(resourcePath, out var cached))
return cached;
var request = Resources.LoadAsync<Sprite>(resourcePath);
await request.ToUniTask(cancellationToken: ct);
var sprite = request.asset as Sprite;
_spriteCache[resourcePath] = sprite;
return sprite;
}
/// <summary>
/// 리소스 경로로 Texture2D를 동기로 로드합니다. (캐싱됨)
/// </summary>
/// <param name="resourcePath">리소스 경로 (예: Icons/Home)</param>
public static Texture2D? LoadTexture(string resourcePath)
{
if (_textureCache.TryGetValue(resourcePath, out var cached))
return cached;
var texture = Resources.Load<Texture2D>(resourcePath);
_textureCache[resourcePath] = texture;
return texture;
}
/// <summary>
/// 리소스 경로로 Texture2D를 비동기로 로드합니다. (캐싱됨)
/// </summary>
/// <param name="resourcePath">리소스 경로 (예: Icons/Home)</param>
/// <param name="ct">취소 토큰</param>
public static async UniTask<Texture2D?> LoadTextureAsync(string resourcePath, CancellationToken ct = default)
{
if (_textureCache.TryGetValue(resourcePath, out var cached))
return cached;
var request = Resources.LoadAsync<Texture2D>(resourcePath);
await request.ToUniTask(cancellationToken: ct);
var texture = request.asset as Texture2D;
_textureCache[resourcePath] = texture;
return texture;
}
/// <summary>
/// 아이콘 이름으로 Sprite를 동기로 로드합니다. (캐싱됨)
/// </summary>
/// <param name="iconName">아이콘 파일명 (확장자 제외)</param>
public static Sprite? LoadSpriteByName(string iconName)
{
var path = GetPath(iconName);
return string.IsNullOrEmpty(path) ? null : LoadSprite(path);
}
/// <summary>
/// 아이콘 이름으로 Sprite를 비동기로 로드합니다. (캐싱됨)
/// </summary>
/// <param name="iconName">아이콘 파일명 (확장자 제외)</param>
/// <param name="ct">취소 토큰</param>
public static async UniTask<Sprite?> LoadSpriteByNameAsync(string iconName, CancellationToken ct = default)
{
var path = GetPath(iconName);
return string.IsNullOrEmpty(path) ? null : await LoadSpriteAsync(path, ct);
}
/// <summary>
/// 아이콘 이름으로 Texture2D를 동기로 로드합니다. (캐싱됨)
/// </summary>
/// <param name="iconName">아이콘 파일명 (확장자 제외)</param>
public static Texture2D? LoadTextureByName(string iconName)
{
var path = GetPath(iconName);
return string.IsNullOrEmpty(path) ? null : LoadTexture(path);
}
/// <summary>
/// 아이콘 이름으로 Texture2D를 비동기로 로드합니다. (캐싱됨)
/// </summary>
/// <param name="iconName">아이콘 파일명 (확장자 제외)</param>
/// <param name="ct">취소 토큰</param>
public static async UniTask<Texture2D?> LoadTextureByNameAsync(string iconName, CancellationToken ct = default)
{
var path = GetPath(iconName);
return string.IsNullOrEmpty(path) ? null : await LoadTextureAsync(path, ct);
}
/// <summary>
/// 캐시를 클리어합니다.
/// </summary>
public static void ClearCache()
{
_spriteCache.Clear();
_textureCache.Clear();
}
#endregion
}
}