惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
罗磊的独立博客
T
Tailwind CSS Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Jina AI
Jina AI
V
V2EX
美团技术团队
阮一峰的网络日志
阮一峰的网络日志
酷 壳 – CoolShell
酷 壳 – CoolShell
月光博客
月光博客
量子位
MyScale Blog
MyScale Blog
G
Google Developers Blog
M
MIT News - Artificial intelligence
L
LangChain Blog
Microsoft Azure Blog
Microsoft Azure Blog
Recent Announcements
Recent Announcements
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
有赞技术团队
有赞技术团队
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
D
DataBreaches.Net
云风的 BLOG
云风的 BLOG
B
Blog

博客园 - 华安

C#中Microsoft.Extensions.Caching.Memory 与 System.Runtime.Caching.MemoryCache区别 自适应网格系统:CSS Grid中repeat()、auto-fill与auto-fit的深度解析 CSS3中响应式布局两大神器display:flex和display:grid springBoot中的 pom.xml文件 bulid学习 CSS中元素的display显示方式有多种,隐藏、块级、内联、内联-块级 SQl Server 中的 go 是什么作用 CSS中 display:flex的align-items: stretch; 移动端浏览器(尤其是 iOS Safari)的橡皮筋回弹效果(Overscroll / Bounce Effect) 手机端浏览器上ES6中的Fetch回调执行 window.open没效果 用Flex实现兼容性好的全屏布局 在 VS Code 中使用 C# Dev Kit 和 Unity Tools 调试 Unity 2022 Unity 可编程物件(ScriptableObject) 微信小程序中的 联系客服 最基本的使用方法 wx.requestSubscribeMessage(Object object) 和 wx.requestSubscribeDeviceMessage(Object object) 这两个有什么区别 微信小程序中 wx.hideLoading() 后调用 wx.showToast()的问题 Windows 中启动 Nginx的常用命令 CSS进阶技巧:字体渐变、描边、倒影与渐变色描边全解析 netCore 中各DLL引用了 SkiaSharp.dll的问题 unity中预制体解包 在 Unity 中,Time.timeScale实现游戏暂停加速等 微信小程序中关联微信支付 unity中的 Navigation AI使用 C#中TaskCompletionSource(简称 TCS)学习 Unity 编辑器 中,快捷键 Ctrl + Shift + F 的功能 unity中按下 F键,让物体聚焦 微信中进入定页面的,判断时通过扫二维码进入的,还是点小程序名称进入的 MYSQL中从JSON字符串中提取指定的值 Unity2022中创建动画 Animation(旧方法) Unity 中区别,public 和 [SerializeField] Unity中 onCollisionEnter2D与OnTriggerEnter2D 区别
Unity 相机:正交 (Orthographic) vs 透视 (Perspective)
华安 · 2026-07-11 · via 博客园 - 华安

核心区别

 正交 (Orthographic)透视 (Perspective)
视觉效果 无近大远小,物体大小与距离无关 有近大远小,模拟人眼/真实相机
投影方式 平行投影 锥形投影
适用场景 2D 游戏、UI、建筑蓝图、像素风 3D 游戏、FPS、写实场景
深度感 无(或很弱)
性能 略优(计算简单) 略低

图示对比

透视 (Perspective)              正交 (Orthographic)
    📷                               📷
   /|\                             |===|
  / | \                            |   |
 /  |  \                           |   |    ← 视锥体是长方体
/   |   \                          |   |
🟦  🟦  🟦                         🟦🟦🟦
近大  中   远小                    一样大
 

Inspector 参数

参数正交透视
Projection Orthographic Perspective
Size 控制视口高度的一半(单位:世界单位)
Field of View (FOV) 控制视野角度(默认 60°)

代码切换

Camera cam = GetComponent<Camera>();

// 切换为正交
cam.orthographic = true;
cam.orthographicSize = 5f;  // 视口半高 = 5 世界单位

// 切换为透视
cam.orthographic = false;
cam.fieldOfView = 60f;

实际应用

场景推荐模式原因
横版 2D 游戏(如马里奥) 正交 角色大小不随距离变化
俯视角 2D(如星露谷物语) 正交 保持比例一致
UI 相机 正交 元素大小固定
3D FPS / 开放世界 透视 真实深度感
等距视角 3D(如暗黑破坏神) 正交 或 透视小 FOV 风格化选择
建筑可视化 正交 精确测量,无变形

一个细节:正交下的"深度"

正交相机没有透视缩短,但仍有 Z 轴(深度):

  • 用于 Sorting Layer 和 Order in Layer 决定渲染顺序

  • 用于 遮挡关系(前面的物体挡住后面的)

// 正交下,物体远近不影响大小,但影响遮挡
transform.position = new Vector3(x, y, z);  // z 决定前后层级

混合使用技巧

很多游戏会同时使用两个相机:

相机模式用途Depth
主相机 透视 渲染 3D 世界 0
UI 相机 正交 渲染血条、菜单 1
// UI 相机设置
Camera uiCam = ...;
uiCam.orthographic = true;
uiCam.clearFlags = CameraClearFlags.DepthOnly;  // 不清理颜色缓冲
uiCam.cullingMask = LayerMask.GetMask("UI");