Unity Tilemap 添加相应的法线贴图、高光贴图等等(超便捷方法)

概述

项目组需要不同的地块用不同的法线贴图和高光、粗糙贴图等等。

但是我们用的是集成到unity里的 tile map。它们的代码并非是开源的,重要的渲染方式的代码都写在C++里。

拓展性非常不友好。尝试过用MaterialPropertyBlock去修改,但是因为拿不到每种地块渲染前的代码,所以

根本不知道怎么去替换法线贴图。

终于在查找资料的时候,无意中找到了Unity官方自带的一种方法:

Sprite Editor: Secondary Textures  !!!!!

详细介绍

因为tilemap并不支持给shader提供多张贴图,Unity居然在SpriteEditor里很低调的支持了这种办法?

具体的做法是:

1、打开Sprite Editor

Unity Tilemap 添加相应的法线贴图、高光贴图等等(超便捷方法)

2、在下拉框中选择Secondary Textures。

Unity Tilemap 添加相应的法线贴图、高光贴图等等(超便捷方法)

3、点击+号,再在Texture一栏选择相应的法线贴图/高光贴图(反正是所需的贴图),

name的一栏输入shader里贴图相应的属性名。

Unity Tilemap 添加相应的法线贴图、高光贴图等等(超便捷方法)

4、点击Apply,即可生效!

Unity Tilemap 添加相应的法线贴图、高光贴图等等(超便捷方法)

5、游戏中生效的效果,看,生效的贴图和没使用第二张贴图的地面效果相差很远:

Unity Tilemap 添加相应的法线贴图、高光贴图等等(超便捷方法)

参考文章:

https://docs.unity3d.com/Manual/SpriteEditor-SecondaryTextures.html