#nullable enable
using UnityEngine;
using UnityEngine.UI;
namespace UVC.util
{
public static class CanvasUtil
{
///
/// 월드 공간에서 캔버스 공간으로 점을 변환합니다.
///
/// 월드 공간에서의 위치입니다.
/// 변환할 캔버스입니다.
/// 캔버스 공간에서의 위치입니다.
public static UnityEngine.Vector2 WorldToCanvasPosition(UnityEngine.Vector3 worldPosition, UnityEngine.Canvas canvas)
{
var screenPoint = UnityEngine.Camera.main.WorldToScreenPoint(worldPosition);
return UnityEngine.RectTransformUtility.PixelAdjustPoint(screenPoint, canvas.transform as UnityEngine.RectTransform, canvas);
}
///
/// 지정된 이름과 부모 캔버스(선택 사항)를 사용하여 새 인스턴스를 만듭니다.
///
/// 부모 캔버스를 지정하지 않으면 새 캔버스는 기본적으로 로 설정됩니다.
/// 새 캔버스 객체에 지정할 이름입니다. null이거나 비어 있을 수 없습니다.
/// 선택 사항인 부모 입니다. 제공된 경우, 새 캔버스는 부모의 위치, 회전 및 크기를 상속합니다.
/// 선택 사항인 부모 입니다. 제공된 경우, 새 캔버스는 부모 캔버스의 렌더링 모드,
/// 정렬 레이어 ID 및 정렬 순서를 상속하며, 정렬 순서는 1씩 증가합니다.
/// 및 를 포함한 기본 구성 요소로 구성된 새 인스턴스입니다.
public static Canvas GetOrCreate(string name, Transform? parent = null, Canvas? parentCanvas = null)
{
Canvas? canvas = FindCanvasByName(name);
if (canvas != null) return canvas!;
var canvasObject = new GameObject(name);
canvas = canvasObject.AddComponent