当前位置: 首页 > article >正文

代码修改材质参数

1、 如何得到对象使用的材质

  • 获取到对象的渲染器Renderer

Mesh Renderer和Skinned Mesh Renderer都继承Renderer,可以用里式替换原则父类获取、装载子类对象

  • 通过渲染器获取到对应材质

可以利用渲染器中的material或者sharedMaterial来获取物体的材质,如果存在多个材质,可以使用renderer.materials或renderer.sharedMaterials来获取

material和sharedMaterial的区别

material:
material属性会返回对象的实例化材质, 相当于它会为对象创建一个该材质的独立副本,通过material属性修改材质时,这些更改只会影响这个特定对象,而不会影响使用相同材质的其他对象,使用material会增加内存消耗,因为每个对象都有自己独立的材质副本,但是可以单独修改单个对象

sharedMaterial:
sharedMaterial属性会返回对象的共享材质,相当于它返回的是所有使用这个材质的对象共享的同一个材质实例,通过sharedMaterial属性修改材质时,这些更改会影响所有使用这个材质的对象
使用sharedMaterial不会增加内存消耗,但是会批量修改所有使用该材质的对象

//sharedMaterial和material的区别
//sharedMaterial:一个是改一个都变
//material:一个是改一个不会影响其它使用相同材质球的对象
//得到主材质球
material = renderer.material;//renderer.sharedMaterial;
//得到所有的材质球
Material[] materials = renderer.sharedMaterials; //renderer.materials;

2、如何修改材质属性以及常用方法

颜色:材质对象中有color成员用于颜色修改
纹理:材质对象中有mainTexture成员用于主纹理修改
通用修改方式:材质中有各种Set方法,用于修改属性,通过传入属性名,以及对应值进行赋值
注意:属性值以SubShader中声明的属性名为准,而不是面板上的显示
修改Shader:调用材质中shader属性进行修改,利用Shader.Find(Shader名)方法得到对应Shader

// 修改颜色
material.color = color;
// 修改主纹理
material.mainTexture = Resources.Load<Texture2D>("路径");

if(material.HasColor("_Color"))
{
    material.SetColor("_Color", color);
    print(material.GetColor("_Color"));
}
                

if(material.HasFloat("_FresnelScale"))
    material.SetFloat("_FresnelScale", fresnelScale);

//修改渲染队列
material.renderQueue = 2000;
 
// 修改材质球使用的shader
material.shader = Shader.Find("Unlit/Lesson80_Fresnel");

material.SetTextureOffset("_MainTex", new Vector2(0.5f, 0.5f));
material.SetTextureScale("_MainTex", new Vector2(0.5f, 0.5f));


http://www.kler.cn/a/392192.html

相关文章:

  • C++中的栈(Stack)和堆(Heap)
  • python魔术方法的学习
  • influxDB 时序数据库安装 flux语法 restful接口 nodjsAPI
  • 假期增设:福祉与负担并存,寻求生活经济平衡之道
  • 【Webpack实用指南】如何拆分CSS资源(2)
  • Scala入门基础(17.1)Set集习题
  • 美团代付微信小程序 read.php 任意文件读取漏洞复现
  • 【计算机网络】UDP网络程序
  • 汇总常用的114款AI视频创作工具,堪称运营神器,收藏备用!
  • OpenBayes 一周速览丨VASP 教程上线!HPC 助力材料计算;AllClear 公共云层去除数据集发布,含超 23k 个全球分布的兴趣区域
  • 一文了解珈和科技在农业遥感领域的服务内容和能力
  • 智慧医疗:纹理特征VS卷积特征
  • Kafka - 启用安全通信和认证机制_SSL + SASL
  • Python学习从0到1 day27 Python 高阶技巧 ④ 设计模式 — 工厂模式
  • 计算机组成原理——提高存储器访问速度
  • 发布一个npm组件库包
  • Java[面试题]-真实面试2.0
  • KALI-sqlmap更新
  • JVM 参数配置入门与优化案例
  • ubantu git
  • 回溯算法(组合问题)-- 游戏分组
  • btstack协议栈实战篇--HID Keyboard Classic
  • 预处理、编译、汇编和链接
  • 力扣 二叉树的直径-543
  • 详解Gemini API的使用:在国内实现大模型对话与目标检测教程
  • SpringBoot 实战:文件上传之秒传、断点续传、分片上传