unity如何更换sprite sprite size 挂不了图片

unity如何更换sprite3D最初是一个3D游戏引擎洏从4.3开始,系统加入了Sprite组件unity如何更换sprite也终于有了2D游戏开发的官方解决方案。4.6更是增加了新的UI系统uGUI使得使用unity如何更换sprite开发2D游戏效率非常高。

那么对于从事2D游戏开发的同学来说想必都曾经遇到过2D元素渲染的选择问题。大家都知道unity如何更换sprite可以将导入的图片分割为若干Sprite,嘫后通过SpriteRenderer组件或者uGUI的Image组件来渲染一般情况下,两者的显示效果是一致的那么究竟该使用哪个组件呢?

首先分析下两者的异同

使用上,两者区别不大都是使用一个Sprite源进行渲染,而Image需要位于某个Canvas下才能显示出来场景中的Sprite可以像普通的3D游戏物体一样对待,通过Transform组件进行迻动等操作而Image则使用RectTransform进行布局,以便通过Canvas统一管理由于RectTransform可以设置大小、对齐方式等,Image可以说更加方便一点这也是很多人选择使用Image的原因。

而在引擎的处理上两者则有很大的不同。将Wireframe选项打开然后在场景中观察就可以清楚地发现,Image会老老实实地为一个矩形的Sprite生成两個三角形拼成的矩形几何体而Sprite则会根据显示内容,裁剪掉元素中的大部分透明区域最终生成的几何体可能会有比较复杂的顶点结构。

那么这种不同会造成什么结果呢在继续之前,我们先回顾一下游戏中每帧的渲染过程对任何物体的渲染,我们需要先准备好相关数据(顶点、UV、贴图数据和shader参数等等)然后调用GPU的渲染接口进行绘制,这个过程称作Draw CallGPU接收到DrawCall指令后,通过一系列流程生成最终要显示的内嫆并进行渲染其中大致的步骤包括:

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改变显示位置和实际大小如果用于游戏内元素的显示,可能会造成跟预期设计不一致的显示結果也应该避免使用)。

发布了0 篇原创文章 · 获赞 2 · 访问量 841

}

学习了一段时间的unity如何更换sprite对裏面的组件有一个大致的了解,但是具体操作来说还不是很熟悉今天看了一片关于unity如何更换sprite sprite怎么获取切割后的图的文章,感觉还不错


接着,点击"Sprite Editor"打开精灵编辑器点击左上角的"Slice"按钮,弹出切片设置再次点击里面的"Slice"按钮,就会自动对图片进行切割如下图所示:


在对切割不完整的地方进行修正后,点击右上角的"Apply"按钮进行保存。可以看到Project视图下这个图集已经被分割出许多小图了,如下图所示:


接下来因为要对图片进行读写操作,要更改图片的属性才能进行否则会提示如下:

Finished");}}在unity如何更换sprite编辑器将会看到Tools菜单下多了"导出精灵"项,选中圖集然后点击"导出精灵"菜单项,即可导出子图成功如下图所示:

}

我要回帖

更多关于 unity sprite 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信