353 lines
17 KiB
C#
353 lines
17 KiB
C#
// <auto-generated>
|
|
// 이 파일은 UTKImageIconsGenerator에 의해 자동 생성되었습니다.
|
|
// 직접 수정하지 마세요. Tools > UTK > Image Icons Generator 메뉴로 재생성하세요.
|
|
// Source: Assets/Resources/Studio/Images
|
|
// </auto-generated>
|
|
|
|
#nullable enable
|
|
using System.Collections.Generic;
|
|
using System.Threading;
|
|
using Cysharp.Threading.Tasks;
|
|
using UnityEngine;
|
|
|
|
namespace UVC.Studio.Config
|
|
{
|
|
/// <summary>
|
|
/// 이미지 아이콘 리소스 경로 상수 클래스입니다.
|
|
/// 총 34개의 아이콘을 포함합니다.
|
|
/// </summary>
|
|
/// <example>
|
|
/// <code>
|
|
/// // 상수로 리소스 경로 사용
|
|
/// 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();
|
|
/// </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 파일 -->
|
|
/// <ui:VisualElement class="my-icon" />
|
|
/// </code>
|
|
/// <para><b>C# 코드에서 UXML 요소에 이미지 적용:</b></para>
|
|
/// <code>
|
|
/// var iconElement = root.Q<VisualElement>("my-icon");
|
|
/// var texture = StudioUTKImageIcons.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 = StudioUTKImageIcons.LoadSpriteByName("btn_close_16");
|
|
/// </code>
|
|
/// </remarks>
|
|
public static class StudioUTKImageIcons
|
|
{
|
|
/// <summary>logo.png</summary>
|
|
public const string Logo = "Studio/Images/logo";
|
|
/// <summary>tail_btn_property_close_40.png</summary>
|
|
public const string TailBtnPropertyClose40 = "Studio/Images/tail_btn_property_close_40";
|
|
/// <summary>tail_btn_property_open_40.png</summary>
|
|
public const string TailBtnPropertyOpen40 = "Studio/Images/tail_btn_property_open_40";
|
|
/// <summary>toolbar_icon_align_40.png</summary>
|
|
public const string ToolbarIconAlign40 = "Studio/Images/toolbar_icon_align_40";
|
|
/// <summary>toolbar_icon_align_hc_40.png</summary>
|
|
public const string ToolbarIconAlignHc40 = "Studio/Images/toolbar_icon_align_hc_40";
|
|
/// <summary>toolbar_icon_align_he_40.png</summary>
|
|
public const string ToolbarIconAlignHe40 = "Studio/Images/toolbar_icon_align_he_40";
|
|
/// <summary>toolbar_icon_align_hl_40.png</summary>
|
|
public const string ToolbarIconAlignHl40 = "Studio/Images/toolbar_icon_align_hl_40";
|
|
/// <summary>toolbar_icon_align_hr_40.png</summary>
|
|
public const string ToolbarIconAlignHr40 = "Studio/Images/toolbar_icon_align_hr_40";
|
|
/// <summary>toolbar_icon_align_vb_40.png</summary>
|
|
public const string ToolbarIconAlignVb40 = "Studio/Images/toolbar_icon_align_vb_40";
|
|
/// <summary>toolbar_icon_align_ve_40.png</summary>
|
|
public const string ToolbarIconAlignVe40 = "Studio/Images/toolbar_icon_align_ve_40";
|
|
/// <summary>toolbar_icon_align_vm_40.png</summary>
|
|
public const string ToolbarIconAlignVm40 = "Studio/Images/toolbar_icon_align_vm_40";
|
|
/// <summary>toolbar_icon_align_vt_40.png</summary>
|
|
public const string ToolbarIconAlignVt40 = "Studio/Images/toolbar_icon_align_vt_40";
|
|
/// <summary>toolbar_icon_arc_off_40.png</summary>
|
|
public const string ToolbarIconArcOff40 = "Studio/Images/toolbar_icon_arc_off_40";
|
|
/// <summary>toolbar_icon_arc_on_40.png</summary>
|
|
public const string ToolbarIconArcOn40 = "Studio/Images/toolbar_icon_arc_on_40";
|
|
/// <summary>toolbar_icon_delete_40.png</summary>
|
|
public const string ToolbarIconDelete40 = "Studio/Images/toolbar_icon_delete_40";
|
|
/// <summary>toolbar_icon_duplicate_40.png</summary>
|
|
public const string ToolbarIconDuplicate40 = "Studio/Images/toolbar_icon_duplicate_40";
|
|
/// <summary>toolbar_icon_guide_40.png</summary>
|
|
public const string ToolbarIconGuide40 = "Studio/Images/toolbar_icon_guide_40";
|
|
/// <summary>toolbar_icon_link_off_40.png</summary>
|
|
public const string ToolbarIconLinkOff40 = "Studio/Images/toolbar_icon_link_off_40";
|
|
/// <summary>toolbar_icon_link_on_40.png</summary>
|
|
public const string ToolbarIconLinkOn40 = "Studio/Images/toolbar_icon_link_on_40";
|
|
/// <summary>toolbar_icon_move_off_40.png</summary>
|
|
public const string ToolbarIconMoveOff40 = "Studio/Images/toolbar_icon_move_off_40";
|
|
/// <summary>toolbar_icon_move_on_40.png</summary>
|
|
public const string ToolbarIconMoveOn40 = "Studio/Images/toolbar_icon_move_on_40";
|
|
/// <summary>toolbar_icon_node_off_40.png</summary>
|
|
public const string ToolbarIconNodeOff40 = "Studio/Images/toolbar_icon_node_off_40";
|
|
/// <summary>toolbar_icon_node_on_40.png</summary>
|
|
public const string ToolbarIconNodeOn40 = "Studio/Images/toolbar_icon_node_on_40";
|
|
/// <summary>toolbar_icon_redo_40.png</summary>
|
|
public const string ToolbarIconRedo40 = "Studio/Images/toolbar_icon_redo_40";
|
|
/// <summary>toolbar_icon_rotate_off_40.png</summary>
|
|
public const string ToolbarIconRotateOff40 = "Studio/Images/toolbar_icon_rotate_off_40";
|
|
/// <summary>toolbar_icon_rotate_on_40.png</summary>
|
|
public const string ToolbarIconRotateOn40 = "Studio/Images/toolbar_icon_rotate_on_40";
|
|
/// <summary>toolbar_icon_save_off_40.png</summary>
|
|
public const string ToolbarIconSaveOff40 = "Studio/Images/toolbar_icon_save_off_40";
|
|
/// <summary>toolbar_icon_save_on_40.png</summary>
|
|
public const string ToolbarIconSaveOn40 = "Studio/Images/toolbar_icon_save_on_40";
|
|
/// <summary>toolbar_icon_scale_off_40.png</summary>
|
|
public const string ToolbarIconScaleOff40 = "Studio/Images/toolbar_icon_scale_off_40";
|
|
/// <summary>toolbar_icon_scale_on_40.png</summary>
|
|
public const string ToolbarIconScaleOn40 = "Studio/Images/toolbar_icon_scale_on_40";
|
|
/// <summary>toolbar_icon_select_off_40.png</summary>
|
|
public const string ToolbarIconSelectOff40 = "Studio/Images/toolbar_icon_select_off_40";
|
|
/// <summary>toolbar_icon_select_on_40.png</summary>
|
|
public const string ToolbarIconSelectOn40 = "Studio/Images/toolbar_icon_select_on_40";
|
|
/// <summary>toolbar_icon_snap_40.png</summary>
|
|
public const string ToolbarIconSnap40 = "Studio/Images/toolbar_icon_snap_40";
|
|
/// <summary>toolbar_icon_undo_40.png</summary>
|
|
public const string ToolbarIconUndo40 = "Studio/Images/toolbar_icon_undo_40";
|
|
|
|
#region Lookup & Load
|
|
|
|
private static readonly Dictionary<string, string> _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<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>
|
|
public static IEnumerable<string> GetAllIconNames() => _pathsByName.Keys;
|
|
|
|
/// <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 int Count => 34;
|
|
|
|
/// <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
|
|
}
|
|
}
|