在 Unity 中能做到通过程序修改模型的纹理吗

21 天前
 mikaotaku

我是一个业余的游戏程序,现在有一个需求是这样的:在一个场景里同时有非常多的船,都使用同一个模型,除了船身上的舷号不一样,其余部分完全一样。如果仅仅是因为舷号不同就给每艘船一个单独的纹理感觉很没必要,所以在考虑能不能实现用程序在运行时去修改模型的纹理。 我考虑的方案大概是这样:有一个从 0~9 数字的纹理图片,在程序里按照舷号数字计算出要显示哪一部分,然后拼起来。但具体怎么实现,我感觉还有不少要解决的问题,希望大佬们能给我提些建议和方向。 本人对游戏开发比较小白,上面问题描述不专业还请海涵 qwq 。

1279 次点击
所在节点    游戏开发
7 条回复
shuiqingshabai
21 天前
把不一样的那部分贴图分出来一个单独的材质球不行吗
LaTero
21 天前
metalvest
21 天前
用贴花或者用 shader
metalvest
21 天前
glcolof
21 天前
以前游戏里面的做法是,在建模工具里面,增加专门显示弦号的子模型,程序运行中,只要在模型加载时,修改弦号子模型就可以了。修改的方法主要有 2 种:一种是修改顶点 UV 坐标,让子模型的各个四边形映射到数字纹理的相应数字的区域,这个操作也可以在 shader 里面实现;一种是修改子模型的材质球,即分别从 0~9 这 10 种数字对应的材质里面选择一个赋给相应的子模型。
直接生成包含弦号的纹理也是一个可行的方案,Unity 没有提供现成的图像绘制库,楼主可以在网上找找有没有现成方案,或者使用 RenderTarget 和 Graphics 类自己实现一套。
fredshao
20 天前
这个问题本身,就没有必要这样,直接不同材质球就可以了,简单,快速地实现了需求,在没有出现性能问题之前,怎么简单怎么做,产品做出来上线是最重要的,技术是为产品服务的。
SmiteChow
20 天前
专业的是复制修改,存储只存一份

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1068384

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX