| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | using UnityEngine;namespace WebGLSupport.Detail{    public static class Support    {        /// <summary>        /// 画面内の描画範囲を取得する        /// </summary>        /// <param name="uiElement"></param>        /// <returns></returns>        public static Rect GetScreenCoordinates(RectTransform uiElement)        {            var worldCorners = new Vector3[4];            uiElement.GetWorldCorners(worldCorners);            // try to support RenderMode:WorldSpace            var canvas = uiElement.GetComponentInParent<Canvas>();            var useCamera = (canvas.renderMode != RenderMode.ScreenSpaceOverlay);            if (canvas && useCamera)            {                var camera = canvas.worldCamera;                if (!camera) camera = Camera.main;                for (var i = 0; i < worldCorners.Length; i++)                {                    worldCorners[i] = camera.WorldToScreenPoint(worldCorners[i]);                }            }            var min = new Vector3(float.MaxValue, float.MaxValue);            var max = new Vector3(float.MinValue, float.MinValue);            for (var i = 0; i < worldCorners.Length; i++)            {                min.x = Mathf.Min(min.x, worldCorners[i].x);                min.y = Mathf.Min(min.y, worldCorners[i].y);                max.x = Mathf.Max(max.x, worldCorners[i].x);                max.y = Mathf.Max(max.y, worldCorners[i].y);            }            return new Rect(min.x, min.y, max.x - min.x, max.y - min.y);        }    }}
 |