using UnityEngine; namespace InterfaceOff { public class CanvasManager : MonoBehaviour { [field: SerializeField] public Canvas GameCanvas { get; private set; } public static CanvasManager Instance { get; private set; } private void Awake() { if (DebugUtils.IsNull(Instance)) { Instance = this; return; } Debug.LogError("Multiple instances of Canvas Manager have been found"); } public static Vector3 GetRandomPositionOnCanvas() { Rect rect = Instance.GameCanvas.pixelRect; float x = Random.Range(rect.xMin, rect.xMax); float y = Random.Range(rect.yMin, rect.yMax); return new Vector3(x, y, 0f); } public static bool IsRectWithinCanvas(Rect rect) { Rect b = Instance.GameCanvas.pixelRect; Rect a = rect; return b.xMin <= a.xMin && b.yMin <= a.yMin && b.xMax >= a.xMax && b.yMax >= a.yMax; } } }