Unity之对模型材质球进⾏处理
需求:点击模型,使其半透明/透明/带边框/变⾊等。
分析:条件成⽴的时候对模型的材质球做相应处理。
重点是shader参数的修改及某些时候⾃⾏编写(寻找)shader~
⼀、得到材质球
1.必须得到所有的材质球,保证处理后的模型各个部件表现情况⼀致。
2.不论模型制作采⽤的何等⽅式,导⼊Unity后,材质球总是作为⼀个变量赋值到Materials这个数组⾥⾯,该大学生必读 类⽆论是MeshRenderer也好
其他渲染器也罢,都是继承于Renderer。
【1】 间接⽅式:Transform -> Renderer -> Materials
private void GetMaterials(描写秋天的优美句子 GameObject go) {
if (雷锋的故 go == null) {
return;
}
Transform[] trans = ponentsInChild农夫渔夫歌词
ren
Renderer renderer = null;
Material[] materials = null;
for (int i = 0; i < ; i++) {
renderer = trans[i].GetComponent
if (renderer != null) {//某些Transform上没有Renderer
materials = als;
for (int j = 0; j < ; j++) {
if (!ns(materials[j])) {
(materials[j]);
}
}
}
}
}
【2】直接⽅式:Renderer -> Materials
private void GetMaterials(GameObject go) {
if (go == nu大革命失败 ll) {
return;
}
Renderer[] renderers = ponentsInChildren
for (int i = 0; i < ; i++) {
for (int j = 0; j < renderers[i].; j++) {
if (!ns(renderers[i].materials[j])) {
(renderers[i].materials[j]海底两万里手抄报简单 );
}
}
}
}
通过引擎⾃带的API:GetComponentsInC太极站桩 hildren可以获取GameObject下所有的类型为T的组件。(⼦⼦孙孙都逃不脱~)
⼆、业务逻辑处理
⽆论是半透明/透明/带边框/变⾊等等,随便哪⼀种情况,只需要分为两种来看待:1)处理之后需要还原;蝴蝶简笔画图片 2)处理之后不需要还原。
针对第⼀种情况,⽤⼀个容器存储所有的Material作为原始数据备份,在需要还原的逻辑处重新赋值即可。
本文发布于:2023-04-27 02:45:53,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/fan/89/850055.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |