码迷,mamicode.com
首页 > 移动开发 > 详细

unity移动Canvas的子对象到屏幕坐标

时间:2020-04-13 12:37:49      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:osi   lan   engine   min   分辨率   NPU   child   均值   move   

using UnityEngine;
using UnityEngine.UI;

public class MoveCanvasChildToScreenPos:MonoBehaviour{
	public CanvasScaler canvasScaler;    //Canvas对象的CanvasScaler组件
	public RectTransform rectTransform;  //需要移动的Canvas子对象的RectTransform组件
	
	private void Update(){
		MoveToScreenPos(Input.mousePosition);
	}
	
	private void MoveToScreenPos(Vector2 screenPos){
		//屏幕分辨率与设计分辨率的缩放因子
		float scaleX=Screen.width/canvasScaler.referenceResolution.x;
		float scaleY=Screen.height/canvasScaler.referenceResolution.y;
				
		//加权平均值
		float averageValue=scaleX*(1-canvasScaler.matchWidthOrHeight)+scaleY*(canvasScaler.matchWidthOrHeight);
		screenPos/=averageValue;
				
		screenPos-=rectTransform.sizeDelta*0.5f;//以中心为枢轴
			
		Vector2 offset=screenPos-rectTransform.offsetMin;

		rectTransform.offsetMin=screenPos;
		rectTransform.offsetMax=rectTransform.offsetMax+offset;
	}
}

unity移动Canvas的子对象到屏幕坐标

标签:osi   lan   engine   min   分辨率   NPU   child   均值   move   

原文地址:https://www.cnblogs.com/kingBook/p/12581982.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!