Unity-代码中动态设置Material参数

在Unity中,通过代码可以动态调整Material的参数,例如使用SetColor, SetFloat, SetInt和SetTexture等API。然而,当为StandardShader设置法线贴图时,若未正确配置,物体可能无法显示法线凹凸效果。解决这个问题的关键在于确保法线贴图的类型设置为NormalMap,并激活相应关键字。Unity的标准着色器由多个支持特定功能的着色器变体组成,为材质启用正确关键字至关重要。本文介绍了如何激活支持法线贴图的着色器变体,并提供了相关代码示例。" 128952750,10091581,Vue3 组件间通信详解,"['vue.js', '前端开发', '组件通信']
摘要由CSDN通过智能技术生成

我们知道在Unity中可以在代码中动态地改变Material监视面板中的参数,如改变数值大小或替换贴图。常用的API有:SetColor , SetFloat, SetInt, SetTexture.

然而今天在设置一个StandardShader的材质贴图的时候,发现设置了法线贴图但是场景中的物体并没有法线凹凸的效果,需要激活一下材质面板才行。经过反复检查以及查找资料,主要有以下两个问题:

// 贴图类型
string[] TEXTURE_TYPE = { "_MetallicGlossMap", "_BumpMap", "_ParallaxMap", "_OcclusionMap", "_DetailMask", "_DetailAlbedoMap", "_DetailNormalMap"};

// Material需要设置的关键字
string[] TEXTURE_KEYWORD = { "_METALLICGLOSSMAP", "_NORMALMAP", "_PARALLAXMAP", "", "_DETAIL_MULX2", "_DETAIL_MULX2", "_DETAIL_MULX2" };
  1. 法线贴图导入进来需要设置类型为NormalMap

    // 设置法线贴图的类型
    if (fileName == diffuseName + TEXTURE_TYPE[1])
    {
        TextureImporter importer = (TextureImporter)AssetImporter<
  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值