Unity之UI、模型跟随鼠标移动(自适应屏幕分辨率、锚点、pivot中心点)

一、效果展示

UI跟随鼠标移动, 当我们修改屏幕分辨率、锚点、pivot等参数时会动态自适应并始终让ui的pivot中心点位置跟随鼠标位置。同时脚本中包含3d物体跟随ui位置和3d物体直接跟随鼠标位置移动

二、屏幕坐标、Canvas自适应、锚点、中心点关系

在说功能原理之前我们需要先了解屏幕坐标、Canvas自适应、锚点、中心的特性和之间的关系。

1.屏幕坐标 

屏幕坐标也就是电脑分辨率,一般我们所说的1920*1080代表的是这个显示器可以容纳长1920*宽1080像素。例如下方图片中我设置屏幕分辨率是1920*1080,左下角坐标位置为(0,0),右上角位置是(1920*1080)。而鼠标位置是基于屏幕坐标零点在左下角计算的。

设置1920*1080分辨率

Unity之UI、模型跟随鼠标移动(自适应屏幕分辨率、锚点、pivot中心点)_第1张图片

根据下方动图可以看出鼠标在左下角为0,右上角为1920*1080.ps:因为不好控制鼠标位置所以有点小误差。

Unity之UI、模型跟随鼠标移动(自适应屏幕分辨率、锚点、pivot中心点)_第2张图片

2. Canvas自适应

在Unity中,Canvas是用于处理UI(用户界面)元素的重要组件。它是一个容器,可以包含各种UI元素,比如文本、按钮、图像等。是所有ui组件的父物体。

Canvas自适应是用来兼容各种设备下不同分辨率的,我们在开发项目中时,如果针对每一个设备的分辨率进行ui布局这是非常麻烦且复杂的事情,通过自适应我们可以只对ui进行一次布局就可以适配在不同分辨率的设备下。

自适应修改Canvas Scale组件下的UI Scale Mode属性。一般有三种模式选项。

画布缩放器 (Canvas Scaler) - Unity 手册

(1)ConstantPixelSize

在这个模式下Canvas的显示大小是固定的,无论用户界面的比例怎么变化Canvas的显示大小都不会改变。

Unity之UI、模型跟随鼠标移动(自适应屏幕分辨率、锚点、pivot中心点)_第3张图片

例如我们ui布局在1080*1920的竖屏下,在左上角设置一个400*400的图片

Unity之UI、模型跟随鼠标移动(自适应屏幕分辨率、锚点、pivot中心点)_第4张图片

Unity之UI、模型跟随鼠标移动(自适应屏幕分辨率、锚点、pivot中心点)_第5张图片

用户设备分辨率是480*800的竖屏下效果

Unity之UI、模型跟随鼠标移动(自适应屏幕分辨率、锚点、pivot中心点)_第6张图片   

 Unity之UI、模型跟随鼠标移动(自适应屏幕分辨率、锚点、pivot中心点)_第7张图片

这种模式下设置的ui不会进行自适应大小,如果你布局ui的分辨率大于用户设备的分辨率可能会出现ui超出屏幕遮挡等问题。

(2)Scale With Screen Size

这个模式下的Canvas会适配用户设备分辨率并对Canvas的Scale大小进行等比例调整。

Unity之UI、模型跟随鼠标移动(自适应屏幕分辨率、锚点、pivot中心点)_第8张图片

 例如我们ui布局在1080*1920的竖屏下,在左上角设置一个400*400的图片

Unity之UI、模型跟随鼠标移动(自适应屏幕分辨率、锚点、pivot中心点)_第9张图片

用户设备分辨率是480*800的竖屏下效果

Unity之UI、模型跟随鼠标移动(自适应屏幕分辨率、锚点、pivot中心点)_第10张图片

此属性是通过等比例缩放来进行自适应的,通过设置ui布局的原始分辨率Reference Resolution,和Match宽高匹配来进行Scale放大缩放。

1080*1920分辨率到480*800分辨率的缩放原理

Unity之UI、模型跟随鼠标移动(自适应屏幕分辨率、锚点、pivot中心点)_第11张图片

 因为我们Match值为0取的是width,所以缩放比例要按照width来,在下图ps中width是44.4%约等于0.44与unity中canvas的scale。

Unity之UI、模型跟随鼠标移动(自适应屏幕分辨率、锚点、pivot中心点)_第12张图片

计算方式

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Test : MonoBehaviour
{
    private const 

你可能感兴趣的:(ui,计算机外设)