搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
知新_RL
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Android 性能优化--Protobuf使用及原理_将 /usr/local/lib 路径写入libprotobuf.conf
2
微信 h5 image禁止长按保存图片_微信长按会保存图片禁止
3
【第三方支付】微信支付总结_微信支付回调
4
Android源码下载
5
pip升级安装_linuxs升级py
6
推荐 10 个饱受好评且功能独特的开源人工智能项目
7
自定义类型之结构体详解——struct_struct结构体
8
FlexCan介绍
9
Spring Cloud 学习之 Commons (Greenwich.SR6 )_spring-cloud-commons.jar
10
ES6中新的AJAX解决方案:Promise、Fetch、Response、Axios_ajax fetch 将结果集返回
当前位置:
article
> 正文
Unity3D - Sprite和Image区别_unity image与sprite的区别
作者:知新_RL | 2024-02-18 08:34:10
赞
踩
unity image与sprite的区别
Unity3D最初是一个3D游戏引擎,而从4.3开始,系统加入了Sprite组件,Unity也终于有了2D游戏开发的官方解决方案。4.6更是增加了新的UI系统uGUI,使得使用Unity开发2D游戏效率非常高。
那么对于从事2D游戏开发的同学来说,想必都曾经遇到过2D元素渲染的选择问题。大家都知道,Unity可以将导入的图片分割为若干Sprite,然后通过SpriteRenderer组件或者uGUI的Image组件来渲染。一般情况下,两者的显示效果是一致的。那么究竟该使用哪个组件呢?
首先分析下两者的异同。
使用上,两者区别不大,都是使用一个Sprite源进行渲染,而Image需要位于某个Canvas下才能显示出来。场景中的Sprite可以像普通的3D游戏物体一样对待,通过Transform组件进行移动等操作,而Image则使用RectTransform进行布局,以便通过Canvas统一管理。由于RectTransform可以设置大小、对齐方式等,Image可以说更加方便一点,这也是很多人选择使用Image的原因。
渲染上,Sprite使用SpriteRenderer组件渲染,而Image则由CanvasRenderer组件渲染。两者在视觉上没有任何区别(都使用默认材质时)。它们默认的渲染也都是在Transparent Geometry队列中。
而在引擎的处理上,两者则有很大的不同。将Wireframe选项打开然后在场景中观察,就可以清楚地发现,Image会老老实实地为一个矩形的Sprite生成两个三角形拼成的矩形几何体,而Sprite则会根据显示内容,裁剪掉元素中的大部分透明区域,最终生成的几何体可能会有比较复杂的顶点结构。
那么这种不同会造成什么结果呢?在继续之前,我们先回顾一下游戏中每帧的渲染过程。对任何物体的渲染,我们需要先准备好相关数据(顶点、UV、贴图数据和shader参数等等),然后调用GPU的渲染接口进行绘制,这个过程称作Draw Call。GPU接收到DrawCall指令后,通过一系列流程生成最终要显示的内容并进行渲染,其中大致的步骤包括:
1.CPU发送Draw Call指令给GPU;
2.GPU读取必要的数据到自己的显存;
3.GPU通过顶点着色器(vertex shader)等步骤将输入的几何体信息转化为像素点数据;
4.每个像素都通过片段着色器(fragment shader)处理后写入帧缓存;
5.当全部计算完成后,GPU将帧缓存内容显示在屏幕上。
通过上面的认知,我们可以推断:
Sprite由于顶点数据更加复杂,在第1/2步时会比Image效率更低;
Sprite会比Image执行较多的顶点着色器运算;
Image会比Sprite执行更多的片段着色器运算;
似乎Image比Sprite有更大的好处,然而事实上,由于片段着色器是针对每个像素运算,Sprite通过增加顶点而裁剪掉的部分减少了相当多的运算次数,在绝大多数情况下,反而比Image拥有更好的效率 —— 尤其是场景中有大量的2D精灵时。
总结一下,SpriteRenderer会创建额外的几何体来裁剪掉多余的透明像素区域,从而减少了大量的片段着色器运算,并降低了overdraw;而Image则会创建简单的矩形几何体。随着2D元素数量的增加,这种差别会慢慢明显起来。
可以看出,SpriteRenderer确实是经过优化以显示更多的元素的。所以在2D游戏开发中,游戏场景中的元素,应该尽量使用它去渲染。而Image应该仅用于UI显示(实际上即使不考虑性能原因,由于屏幕分辨率的变化,Image可能会被Canvas改变显示位置和实际大小,如果用于游戏内元素的显示,可能会造成跟预期设计不一致的显示结果,也应该避免使用)。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/知新_RL/article/detail/106610
推荐阅读
article
(五)
unity
shader
基础之——————学习
shader
所需
的
数学基础:下篇(
坐标
空间
:
模型
...
一
、
坐标
空间
上篇文章讲述了如何使用矩阵来表示基本
的
变换
,如平移
、
旋转和缩放,在本节我们将关注如何使用这些
变换
来对
坐标
空间
...
赞
踩
article
Unity
UI
Toolkit
学习笔记-
EditorWindow
_
unity
editorwind...
使用
UI
Toolkit
制作
EditorWindow
_
unity
editorwindow
停靠
unity
editorwi...
赞
踩
article
Unity
UI
-- (3)管理
屏幕
大小
和
锚点
_
unity
中打开网页,并且控制网页
大小
...
为何我们需要
锚点
?现在我们已经将设置按钮放到了
屏幕
的某个角落了。一切看起来似乎很美好,但如果我们移动游戏视图窗口的边界,...
赞
踩
article
Unity
Editor
基础篇(三):
自定义
窗口
Editor
Window_selectiongr...
本文参自:http://mp.weixin.qq.com/s/tMSAIND4Pq0farn2jY8rwg本文为本人学习...
赞
踩
article
Unity3d
windows平台基于3D
Web
View for
Windows
and macO...
之前
Unity3d
的程序在win pc上打开
网页
一般使用Embedded
Browser
插件,也算是比较好用的,不过经过查...
赞
踩
article
Unity
EditorWindow
使用案例...
Unity
EditorWindow
学习笔记了解
EditorWindow
的生命周期:OnEnable():当打开界面的时候...
赞
踩
article
【
Unity
WEBGL
】
WEBGL
发布
后运行时窗口自
适应
浏览器
大小(网页内全屏)_
unity
we...
按照默认设置,
发布
webgl
后,代码如下(
发布
好的文件,根目录index.html文件)<...
赞
踩
article
Unity
编辑器
扩展(一) ——
自定义
Unity
面板
_
unity
在
面板
上设置
自定义
结构...
Unity
编辑器
扩展(一) ——
自定义
Unity
面板
自定义
Menu菜单MenuItem 特性MenuItem 属性可...
赞
踩
article
[
unity3d
]
发布
网页
版
Unity
自适应
网页
大小
_
unity3d
web
页面
大小
设置
...
发布
网页
版,
Unity
3D自适应
网页
大小
。这个问题困扰了我很长时间,今天终于把他解决了,给大家分享一下。这里用Uinty...
赞
踩
article
Unity
:
WebGL
发布后在
浏览器
上运行时窗口大小自适应
_
unity
webgl
适配网页...
unity
webgl
在
浏览器
上自适应
浏览器
窗口大小
_
unity
webgl
适配网页
unity
webgl
适配网页 ...
赞
踩
article
Unity3D
-
Canvas
-UIScaleMode...
Unity
Canvas
UI自适应部分用
Canvas
下的自适应UI Scale Mode:Constant Pixel S...
赞
踩
article
Unity
编辑器开发实战【
Editor
Window
】-
Filter
物体筛选工具_
unity
...
Unity
开发工作中,在Hierarchy窗口搜索栏可以通过物体名称或组件名称对场景中的物体进行搜索,但是并不能满足我们...
赞
踩
article
Unity
工具之
UniWebView
内嵌
网页
/
浏览器
到应用中,
并且
根据
UGUI
大小
放置(简单适...
Unity
工具之
UniWebView
内嵌
网页
/
浏览器
到应用中,
并且
根据
UGUI
大小
放置(简单
适配
UGUI
)目录Un...
赞
踩
article
Unity
编辑器
开发实战【
Editor
Window
】- 构建公司
内
部的PackageManage...
Unity
中的资源包管理器Package Manager为我们提供了模块、工具包的集中管理功能,可在其中下载、升级相应的...
赞
踩
article
Unity
Editor
知识点整理(创建 自定义编辑器窗体 二)_
unity
editor
一秒一...
常用的
Editor
Window 消息方法 //在我们对象被选中的时候调用的,常常用于一些初始化的代码 private v...
赞
踩
article
Unity
代码
设置
UI
尺寸
的一种方法_
unity
设置
ui
大小...
计算
设置
sizeDelta
设置
UI
尺寸
_
unity
设置
ui
大小
unity
设置
ui
大小 ...
赞
踩
article
Unity
---
UGUI
---
Rect
Transform
(矩形变换)
---
锚点
及其相关...
a.
锚点
左右分离
---
此时Pos X 失去意义,被Left和Right取代
---
Left的数值是UI物体的左边框...
赞
踩
article
unity
webgl
自适应
网页
尺寸
_
unity
网页
端
尺寸
...
我使用的是
unity
2019.4 LTS版一共有两步1 在Index.html中修改2 修改css 的内容 位置在打包...
赞
踩
article
Unity
UI
锚点
和
位置
关系
_
unity
锚点
代码怎么改成最左侧...
一、Anchors
锚点
Anchors的设置会直接改变RectTransform中它的
位置
信息;Anchors设置中的X ...
赞
踩
article
Unity
Windows
选择图片并加载_
unity
editorwindow
中
如何加载图集
中
的子...
1.找到System.
Windows
.Forms.dll,并放在project
中
的Plugins文件夹下。 “”_uni...
赞
踩
相关标签
unity shader
游戏开发
坐标空间
顶点变换
shader数学基础
unity
UI Toolkit
EditorWindow
ui
锚点
Anchor
Pivot
Unity内嵌网页
Unity网页通信
Unity VR 网页
Unity Web交互
Unity内置浏览器
编辑器
Unity
WEBGL
自适应浏览器
前端
web
html