我是一个业余的游戏程序,现在有一个需求是这样的:在一个场景里同时有非常多的船,都使用同一个模型,除了船身上的舷号不一样,其余部分完全一样。如果仅仅是因为舷号不同就给每艘船一个单独的纹理感觉很没必要,所以在考虑能不能实现用程序在运行时去修改模型的纹理。 我考虑的方案大概是这样:有一个从 0~9 数字的纹理图片,在程序里按照舷号数字计算出要显示哪一部分,然后拼起来。但具体怎么实现,我感觉还有不少要解决的问题,希望大佬们能给我提些建议和方向。 本人对游戏开发比较小白,上面问题描述不专业还请海涵 qwq 。
1
shuiqingshabai 85 天前 1
把不一样的那部分贴图分出来一个单独的材质球不行吗
|
2
LaTero 85 天前 1
|
3
metalvest 85 天前 via Android 1
用贴花或者用 shader
|
4
metalvest 85 天前 via Android
shader forge
https://github.com/FreyaHolmer/ShaderForge |
5
glcolof 85 天前 1
以前游戏里面的做法是,在建模工具里面,增加专门显示弦号的子模型,程序运行中,只要在模型加载时,修改弦号子模型就可以了。修改的方法主要有 2 种:一种是修改顶点 UV 坐标,让子模型的各个四边形映射到数字纹理的相应数字的区域,这个操作也可以在 shader 里面实现;一种是修改子模型的材质球,即分别从 0~9 这 10 种数字对应的材质里面选择一个赋给相应的子模型。
直接生成包含弦号的纹理也是一个可行的方案,Unity 没有提供现成的图像绘制库,楼主可以在网上找找有没有现成方案,或者使用 RenderTarget 和 Graphics 类自己实现一套。 |
6
129ykx733D016U2n 84 天前 1
这个问题本身,就没有必要这样,直接不同材质球就可以了,简单,快速地实现了需求,在没有出现性能问题之前,怎么简单怎么做,产品做出来上线是最重要的,技术是为产品服务的。
|
7
SmiteChow 84 天前
专业的是复制修改,存储只存一份
|