zoukankan      html  css  js  c++  java
  • U3D 如何计算一个UI四个角的绝对坐标

     
            //方式一,使用API获取
            var rtrans = gameObject.GetComponent<RectTransform>();
            Vector3[] worldcorners = new Vector3[4];
            rtrans.GetWorldCorners(worldcorners);
    
            //方式二,手动计算
            var cam = GameObject.Find("Camera").GetComponent<Camera>();
            var cam_h = 2 * cam.orthographicSize;
            var cam_w = cam_h * Screen.width / Screen.height;
    
            var canvasObj = GameObject.Find("Canvas");
            var canvas = canvasObj.GetComponent<Canvas>();
            var canvasScaler = canvasObj.GetComponent<CanvasScaler>();
    
            float screen_w = Screen.width;
            float screen_h = Screen.height;
    
            var pos = transform.position;
            var fw = rtrans.rect.width;
            var fh = rtrans.rect.height;
    
            if (canvasScaler.uiScaleMode == CanvasScaler.ScaleMode.ScaleWithScreenSize)
            {
                screen_w = canvasScaler.referenceResolution.x;
                screen_h = screen_w * Screen.height / Screen.width;
            }
            if (canvas.renderMode == RenderMode.ScreenSpaceCamera)
            {
                fw = rtrans.rect.width / screen_w * cam_w;
                fh = rtrans.rect.height / screen_h * cam_h;
            }
    
            float[] wcs = new float[4];
    
            var c1 = pos.x - fw / 2;
            var c2 = pos.x + fw / 2;
            var c3 = pos.y - fh / 2;
            var c4 = pos.y + fh / 2;
    
            //两种试计算得到的结果完全一样
  • 相关阅读:
    【SpringBoot】SpringBoot中请求路径问题
    CodeForces
    CodeForces
    7-36 旅游规划 (25 分(Dijkstra)
    CodeForces
    CodeForces
    CodeForces
    CodeForces
    CodeForces
    CodeForces
  • 原文地址:https://www.cnblogs.com/timeObjserver/p/7081583.html
Copyright © 2011-2022 走看看