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

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;
	}
}

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

时间: 2024-10-14 07:56:03

unity移动Canvas的子对象到屏幕坐标的相关文章

Unity UGUI Canvas 使用Slider制作角色血条

最近课程实训选修Unity,讲解的是Unity官方案例--SpaceShoot,培训无聊,便想着给游戏角色制作一下血条,以此增加游戏的可玩性. Unity版本:5.4.1 案例模版:太空射击 原文作者:茄阁云云 原文连接:http://www.cnblogs.com/vmoor2016/p/6044941.html 把一个大象装进冰箱里需要三步:①把冰箱门打开:②把大象塞冰箱里:③关上冰箱门. 那么制作一个角色的血条需要几部呢?在这里也划分为三步:①制作血条:②摆放血条:③操作血条. 下面就来给

Unity中Canvas

Render Modes(渲染模式) 1.在screen空间中渲染2.在world空间中渲染 Screen Space-Overlay 在这个渲染模式中,UI元素将在场景的上面.如果场景改变大小或改变分辨率,Canvas将自动改变大小去适配. Screen Space-Camera 这和Screen Space-Overlay类似,但是在这个模式中,这个Canvas放置在了给定距离的摄像机的前面.这些UI元素都是通过摄像机绘制的.这意味着摄像机影响UI的外观.如果摄像机设置为Perspectiv

Unity UGUI - Canvas / Camera

1.Canvas: 1)Render Mode : Screen Space -Camera 2)Render Camera : UICamera(自己创建的相机) 3)Plane Distance : 0 2.Canvas Scaler: 1)Ui Scale Mode : Scale with screen size (宽度标准缩放) 2)Reference Resolutioin: 1920 * 1080   (屏幕分辨率) 3)Screen Match Mode: Expand (UGU

Unity UGUI——Canvas绘制模式比较

三种绘制模式:Screen Space - Overlay.Screen Space - Camera和World Space

unity, get Canvas Scaler referenceResolution

需要using UnityEngine.UI; 然后就可以访问到CanvasScaler组件. float width=GetComponent<CanvasScaler> ().referenceResolution.x float height=GetComponent<CanvasScaler> ().referenceResolution.y

02 Canvas画布

学习笔记适合新手,如有错误请指正.?号处也请各位指点下,谢谢. Canvas画布是承载所有UI元素的区域 所有的UI元素都必须是Canvas的子对象 创建画布: 点击导航菜单>“GameObject”>”UI“>“Canvas”导航栏 Render Mode:渲染模式(Screen Space—Overlay.Screen Space—Camera.World Space) Pixel Perfect:只有RenderMode为Screen类型才有的选项,使UI元素像素对应,效果是边缘清

UGUI学习(一)Canvas

Canvas(画布) The Canvas is the area for all UI elements to be inside. The Canvas is a Game Object with a Canvas component on it, and all UI elements must be children of such a Canvas. 所有的UI元素都会被放置在一个叫做Canvas(画布)的地方,Canvas是一个游戏物体,它自带一个Canvas游戏组件,所有的UI袁旭

2013551814第六次作业

在经过几天的UNITY UGUI的学习后,在查阅相关资料时发现很多NGUI的东西,后发现ngui是ugui的老一辈,而ugui与ngui有什么不一样呢? ugui与ngui区别 uGUI的Canvas 有世界坐标和屏幕坐标uGUI的Image可以使用material  UGUI通过Mask来裁剪,而NGUI通过Panel的Clip NGUI的渲染前后顺序是通过Widget的Depth,而UGUI渲染顺序根据Hierarchy的顺序,越下面渲染在顶层. UGUI 不需要绑定Colliders,UI

UGUI技术之Canvas-画布使用_Unity3D开发_蓝鸥

UGUI技术之Canvas-画布使用_Unity3D开发_蓝鸥 文/宋小波啊(作者) Unity 中有一个能够直观并且快速构建用户界面的 UI 系统,我们叫它 uGUI. uGUI 在 uGUI 中,Canvas 是一个挂载了 Canvas 组件的游戏对象,它划定了一个区域,用来容纳所有的 UI 元素,并且这些 UI 元素必须是 Canvas 的子对象. 当我们创建一个新的 UI 元素时,如果场景中还没有 Canvas,就会自动创建出一个 Canvas. Canvas 会在 Scene 视图中显