Animation 通过更改四边形uv位置在tilemap(每个瓷砖的四边形)网格中设置瓷砖动画是否合理有效?

Animation 通过更改四边形uv位置在tilemap(每个瓷砖的四边形)网格中设置瓷砖动画是否合理有效?,animation,unity3d,sprite,uv-mapping,Animation,Unity3d,Sprite,Uv Mapping,我不熟悉sprite atlas中的程序网格生成和uv贴图。所以我不知道我脑海中出现的解决方案是有效的、合乎逻辑的还是“最佳方式”,或者两者都不是 我目前正在Unity中制作一个程序平铺贴图“engine-y”。几天前我在这里有一个问题,(我问是使用一个网格还是多个精灵对象),根据给出的答案,我现在继续使用网格生成方法 我已经在脑海中创建了基本结构框架。我甚至做了一些原型。我将通过sprite atlas中相应的瓷砖映射每个四边形的UV。(如果有更好的方法,请毫不犹豫地告诉我) 但是我在设置它们

我不熟悉sprite atlas中的程序网格生成和uv贴图。所以我不知道我脑海中出现的解决方案是有效的、合乎逻辑的还是“最佳方式”,或者两者都不是

我目前正在Unity中制作一个程序平铺贴图“engine-y”。几天前我在这里有一个问题,(我问是使用一个网格还是多个精灵对象),根据给出的答案,我现在继续使用网格生成方法

我已经在脑海中创建了基本结构框架。我甚至做了一些原型。我将通过sprite atlas中相应的瓷砖映射每个四边形的UV。(如果有更好的方法,请毫不犹豫地告诉我)

但是我在设置它们的动画时遇到了一个问题。例如,对于一个“水类型”的瓷砖,当然要设置动画,在精灵图集中会有不同的水精灵“帧”

所以,我正在考虑更新“那个四边形”的UV位置,以转移到地图集中水妖的下一帧。 但我不确定这是不是一个好办法。在更新周期中这样做合乎逻辑吗?即使动画速度很慢,它也会在更新周期中更新很多uv点

比如说,如果我在游戏中缩小了,屏幕上有100x100=10000块水砖,(10000个四边形*4=40.0000个uv点需要更新),当我更新那么多uv位置时,会对性能产生影响吗

或者,图形卡是否对其进行了优化,使其不易被发现

如果这不是一种明智的方式,而这种方式可能不是,那么最合乎逻辑和专业的瓷砖动画制作方式是什么


注意:通过使用着色器计算可能有也可能没有解决方案,但我对着色器编程一无所知,因此如果最好的解决方案是使用着色器,我会毫不犹豫地学习它。如果是,请提供着色器编程和UV更新的培训源。(Unity使用ShaderLab作为着色器(如果有必要)

更新UV位置是制作此动画的好方法。我认为这不会给您带来性能问题

然而,这里还有另一种方法需要考虑。让你的水成为一种独立的材料,只有一块瓷砖的纹理那么宽,但是你想让它有多高就有多高。仅为水纹理构建四边形网格,UV设置为仅相当于纹理高度的一块瓷砖。现在,在“材质属性”中,只需更改每个帧上纹理的Y偏移。远离所有的紫外线;Y偏移将有效地添加到每个顶点的V值中。您甚至可以在每一帧上以较小的增量更改它(小于整个平铺的值),以获得平滑的动画,而无需接触网格

当然,成本是它是一种单独的材料,因此需要单独的抽签。但不管怎么说,人们往往对抽签电话过于挑剔

如果您有多个滚动材质(例如,清水、泥水、熔岩、神奇力量的炽热河流等),它们可以共享同一材质,每个纹理贴图有一列。(但这将要求它们以相同的速率滚动。)