当前位置: 首页 > news >正文

Unity屏幕适配——立项时设置

项目类型:2D游戏、竖屏、URP

其他类型,部分原理类似。

1、确定设计分辨率:750*1334

        为什么是它?
        因为它是 iphone8 的尺寸,宽高比适中。
        方便后续适配到真机的 “更长屏” 或 “更宽屏”

2、在场景中添加 UICamera、MainCamera、UICanvas

        添加物体及相关组件

        

3、调整 UICamera 物体的 Camera 组件(URP下)

        Render Type: Overlay                                (支持多相机显示,要点)
        Projection: Orthographic                          (正交)
        Size: 6.67                                                 (修改将影响 UICanvas 的 Scale 值)(注意,它不影响 Canvas 在 Game 视图中的占比,因为 Canvas 总是填满屏幕)
        ClearDepth:true                                       (多相机显示正确,要点)
        Culling Mask:UI                                     (使只渲染UI)

        

4、调整 MainCamera 物体的 Camera 组件(URP下)

        Render Type: Base
        Projection: Orthographic                          (正交)(2D游戏)
        Size: 6.67                                                 (修改将影响 场景物体在 Game 视图中的占比)
        Culling Mask:去掉UI                              (使不渲染UI)
        Stack 中,添加 UICamera                       (相机关联,支持多相机显示,要点)

        

5、调整 UICanvas 物体的 Canvas 组件

        RenderMode: Screen Space-Camera
        RenderCamera: 拖入 UICamera
        SortingLayer: UI

        

6、设置 UICanvas 物体的 Canvas Scaleer 组件

        UI Scale Mode: Scale With Screen Size    (随屏幕缩放)      
        Reference Resolution: 750*1334               (设计分辨率)
        Screen Match Mode: Expand                     (总是扩展更大边)(移动游戏通常采用无黑边的适配方式)
      
  Reference pixels Per Unit: 100                   (控制精灵像素密度,具体见下方说明)

        

注意:为什么是 6.67 ?

        6.67 = 1334/2/100(若为横屏游戏则为3.75)

其中:
        1334 :设计分辨率的高(若为横屏游戏则为750)

        2 :OrthographicSize 为垂直视体大小的一半(Size属性用于定义相机视图的垂直大小)。

           Camera-orthographicSize - Unity 脚本 API

        

        100:UI坐标系 相对 场景世界坐标系的缩放倍数,即,在 Game 视图 中  UI 中100像素 = 场景中世界坐标系的 1米

        这个值来自 Canvas Scaler 的 Reference pixels Per Unit

        Canvas-referencePixelsPerUnit - Unity 脚本 API

        

        为什么它决定了 UI坐标系 相对 场景世界坐标系 的缩放倍数?

        因为:

        Image(UI坐标系中的物体) SetNative 后的大小(单位:像素数) = 原图像素数 / (Sprite 导入设置的 Pixels Per Unit / CanvasScaler设置的 Reference Pixels Per Unit)

        SpriteRenderer(场景世界坐标系中的物体) 的大小(单位:米) = 原图像素数 / Sprite 导入设置的 Pixels Per Unit

        可以看到,两者差的倍数正是 Canvas Scaler 的 Reference pixels Per Unit        

        当两者同时使用一张图时,在 Game 视图 中其大小是相同的

        

对齐之美

        1、将 MainCamera 的 Size 设为 6.67,将使世界物体 7.5m*13.34米的物体 刚好填充整个 MainCamera 的视口,即刚好填充 Game 视图  的整个屏幕

        

        2、将 UICamera 的 Size 设为 6.67,将使 UICanvas 的 Scale 值为 0.01,在 Scene 视图 中观察,UICamera 和 MainCamera 的视口大小是重合的,UI与场景物体大小也是对齐的,完美!               

         

相关文章:

  • 案例驱动的 IT 团队管理:创新与突破之路:第一章 重构 IT 团队管理:从传统到创新-1.2.2 方法论提炼:可复用的管理模型
  • 【uni-app运行错误】SassError: expected selector @import “@/uni.scss“;
  • 用通义大模型写爬虫程序,汇总各科成绩
  • Datawhale coze-ai-assistant 笔记3
  • 初阶数据结构(C语言实现)——5.2 二叉树的顺序结构及堆的实现
  • promise和settimeout的区别,谈一谈eventloop
  • 六、实战开发 uni-app x 项目(仿京东)- 分类页
  • 【二分算法】-- 寻找旋转排序数组中的最小值
  • 2025 香港 Web3 嘉年华:全球 Web3 生态的年度盛会
  • 如何进行前端项目的自动化部署?请简述主要流程和常用工具。
  • 电子电气架构 --- 智能座舱和车载基础软件简介
  • Qt 窗口以及菜单栏介绍
  • 谷歌搜索基本规则
  • 算法014——找到字符串中所有字母异位词
  • C++|构造函数和析构函数
  • 基于PHP的网店进销存管理系统(源码+lw+部署文档+讲解),源码可白嫖!
  • 练习-依依的询问最小值(前缀和差分)
  • C语言之链表
  • NocoBase 本周更新汇总:双因素身份认证(2FA)
  • HTML 字符集
  • 巴基斯坦副总理兼外长达尔将访华
  • 完善劳动关系协商协调机制,《共同保障劳动者合法权益工作指引》发布
  • 解放日报“解码上海AI产业链”:在开源浪潮中,集聚要素抢先机
  • 无人机企业从科技园区搬到乡村后,村子里变得不一样了
  • 纽约市长称墨海军帆船撞桥已致2人死亡,撞桥前船只疑似失去动力
  • 浙江理工大学传播系原系主任刘曦逝世,年仅44岁