首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在一个物体上设置多种材料的颜色

在一个物体上设置多种材料的颜色
EN

Stack Overflow用户
提问于 2022-07-26 12:33:08
回答 1查看 32关注 0票数 0

我有一个游戏对象,有多个材料(数3-4),我想设置所有这些材料的颜色相同。我该怎么做?

代码语言:javascript
运行
复制
myObj.material.SetColor("_Color", Color.red);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-26 12:37:28

.material,但也有.materials

代码语言:javascript
运行
复制
Material[] materials = myObj.materials;
for(int i = 0; i < materials.Length; i++)
{ 
    materials[i].SetColor("_Color", Color.red);
}
myObj.materials = materials;

正如@derHugo所指出的,如果你毁坏了物体,就需要清理这些材料,就像在OnDestroy中那样

如果要将颜色更改应用于使用这些材料的all对象,则sharedMaterial是您的朋友(与在检查器中编辑材料的行为相同):

代码语言:javascript
运行
复制
Material[] sharedMaterials = myObj.sharedMaterials;
for(int i = 0; i < sharedMaterials.Length; i++)
{ 
    sharedMaterials[i].SetColor("_Color", Color.red);
}
myObj.sharedMaterials = sharedMaterials;

相同的过程,但您不需要清理,但它会更改所有实例。

还有一些MaterialPropertyBlocks是有用的,特别是结合DrawMeshInstanced (当你想要一堆不同颜色的物体时)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73123451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档