Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 一张大背景图片还是多张小图片更好?_Unity3d - Fatal编程技术网

Unity3d 一张大背景图片还是多张小图片更好?

Unity3d 一张大背景图片还是多张小图片更好?,unity3d,Unity3d,我正在创建一个2d游戏,我想知道是否最好有一个大背景图像,可以滚动或从多个较小的图像生成背景 ie Unity是否会在图像超出摄像机视野时剔除图像?如果是这种情况,单个大图像的性能会降低吗?这一切都归结为在场景中绘制调用和对象 如果有多个纹理,则意味着每个零件需要多个对象。如果纹理都在同一个图集上,则绘制调用没有问题,但内存中需要这些对象(尽管可以有较少的对象,然后在运行时通过代码使用适当的纹理显示它们)。如果它们不在同一个atlas上,您将有更多的draw调用,因此将更加占用cpu 如果你有一

我正在创建一个2d游戏,我想知道是否最好有一个大背景图像,可以滚动或从多个较小的图像生成背景


ie Unity是否会在图像超出摄像机视野时剔除图像?如果是这种情况,单个大图像的性能会降低吗?

这一切都归结为在场景中绘制调用和对象

如果有多个纹理,则意味着每个零件需要多个对象。如果纹理都在同一个图集上,则绘制调用没有问题,但内存中需要这些对象(尽管可以有较少的对象,然后在运行时通过代码使用适当的纹理显示它们)。如果它们不在同一个atlas上,您将有更多的draw调用,因此将更加占用cpu

如果你有一个大纹理,你将有一个绘制调用和一个对象,所以它是最便宜的


是的,Unity会剔除视锥体外部的内容,除非它是批处理(静态沐浴或动态批处理)的一部分。

如果您有一个绘制级别的大纹理,它将在GPU上使用一个四元组进行渲染,并且在光栅化阶段,将在硬件上调整顶点的UV坐标/位置。没有发生实际的淘汰或性能损失。但是在小图像的情况下,每幅图像都会变成一个四边形(2个三角形),然后变换,然后屏幕外的三角形会被剔除,然而这取决于统一性——它们是如何进行剔除的(硬件或软件)。但无论如何,最好有一个大背景-只有4个顶点需要转换,只有屏幕宽度*高度像素需要渲染

我建议您使用后者

因为可以使用相机截锥消隐和遮挡消隐

如果您使用image atlas,即使您使用多个bg纹理,draw调用也不会增加。所以DC呼叫是相同的

Unity截锥剔除和遮挡剔除基于对象而不是多边形。所以,如果你制作了一大块游戏对象,剔除的可能性会大大降低。就它在相机截锥中而言,它不会被剔除

如果你把背景纹理分割成小块,当它们离开主摄像机时就会被剔除(它们应该是静态的)


我认为你可以不用Unity的筛选功能来管理这种筛选。因为你可以知道背景什么时候从相机里消失

这个问题太宽泛了。你介意提供更多的信息或更详细地解释你的问题吗?此外,您是否尝试过这两种选择?取决于“更好”对您的游戏意味着什么。。。决定一种方式或另一种方式会影响什么?我目前正在尝试一个大图像。这是一个侧滚游戏,我有一个图像,这是非常广泛的目前。我在想,如果它是并排设置的更小的图像,它可能会有更好的性能,因为unity可能会剔除看不见的图像?但是我不知道unity是否会在2D中这样做……完全取决于图像相对于2D视口的分辨率。在视口为逻辑320x200的情况下,为复古像素艺术游戏加载4K图像没有意义