Unity之对模型材质球进行处理

更新时间:2023-04-27 02:45:53 阅读: 评论:0


2023年4月27日发(作者:学生会自我介绍)

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 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图