Unity 如何更改单个物体的颜色-MaterialPropertyBlock
创作时间:
作者:
@小白创作中心
Unity 如何更改单个物体的颜色-MaterialPropertyBlock
引用
CSDN
1.
https://blog.csdn.net/weixin_46146935/article/details/139467444
在Unity开发中,有时需要更改场景中单个物体的颜色,但使用传统的gameObject.renderer.material.color方法会改变所有使用该材质的物体颜色。本文将介绍如何使用MaterialPropertyBlock来解决这一问题,实现对单个物体颜色的独立控制。
使用传统的gameObject.renderer.material.color=?无法更改单个对象材质的颜色,它会让所有附有该material的物体一起变更,因为material是共享的。
如何更改单个物体的颜色,而不更改使用该材质的所有其他对象的颜色呢?
可以通过脚本干净利落地解决,使用MaterialPropertyBlock :
Unity - Scripting API: MaterialPropertyBlock (unity3d.com)
https://docs.unity3d.com/ScriptReference/MaterialPropertyBlock.html它为每个物体提供单独的材质锁,以下是简单的随机颜色变更脚本,将随机颜色替换为指定颜色即可(注意,不同的material内的属性名称不同,这里“_BaseColor”表示URP的默认材质颜色):
using UnityEngine;
public class CargoDisplay : MonoBehaviour
{
public MeshRenderer cargoRenderer;
private MaterialPropertyBlock _propertyBlock;
private static readonly int CargoColor = Shader.PropertyToID("_BaseColor");
private void Start()
{
_propertyBlock = new MaterialPropertyBlock();
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
SetRandomColor();
}
}
/// <summary>
/// random color
/// </summary>
private void SetRandomColor()
{
_propertyBlock.SetColor(CargoColor, UnityEngine.Random.ColorHSV());
cargoRenderer.SetPropertyBlock(_propertyBlock);
}
/// <summary>
/// change color to the given color
/// </summary>
/// <param name="color"> the color to change to</param>
public void SetCargoColor(Color color)
{
_propertyBlock.SetColor(CargoColor, color);
cargoRenderer.SetPropertyBlock(_propertyBlock);
}
}
通过上述代码,你可以轻松实现对单个物体颜色的独立控制,而不会影响使用相同材质的其他物体。
热门推荐
验钞机使用方法图解(如何使用验钞机)
研究发现: 频繁饮用奶茶或增加多种健康风险
蔬菜种子发芽需要多长时间?(种植者必读的关于蔬菜发芽时间的指南)
医院智慧管理分级评估标准体系发布,信息化建设助力医院智慧管理评级
Win10开机启动项设置全攻略:轻松优化系统启动速度
MBTI:个性类型评估工具的类型划分、优缺点、价值与使用注意事项
心理疗愈小锦囊丨孩子和父母,应该谁说了算?
CentOS Stream如何影响服务器上的软件兼容性
中华文化:孔子(Confucius)与《论语》(The Analects)
不锈钢选304还是316?一文读懂不锈钢材质选购指南
如何选择最适合Blender渲染的显卡
揭秘科学:泡沫轴按摩如何改变你的肌肉
深入浅出正念冥想:带你领略内心平和的秘诀
赴港办理香港银行账户(1) - 中国银行(香港)篇(支持线上开户)
赋分后一般比裸分高多少?赋分对哪些学生不利?
车贷还款利息明细查询指南:从查询方法到还款策略
偏瘫患者如何进行手部精细动作训练?
楚怀王熊槐:从一代霸主到秦国阶下囚
腰椎间盘突出饮食 吃什么食物好
打麻将赌博的认定标准
笔记本电脑屏幕松动怎么办?多种实用解决方案帮你轻松应对
缅怀“百岁”邓稼先 体悟“两弹一星”精神
计算机视觉算法全解析:从传统方法到深度学习的演变
天麻的产地分布与药用价值
十种富含姜黄素的食物推荐
孕中期怎么补,来听听营养师的专业建议
如何降低企业的合同法律风险
大数据智能风控:模型、数据和业务实践详解
什么是钝化?
A股可控核聚变概念一周走强,多家上市公司回应相关布局