Unity 代码动态勾选或取消材质球上的选项

Unity 代码动态勾选或取消材质球上的选项

思路

找到这个材质球对应的Shader→打开Shader源代码→根据关键字找到想修改的属性→使用Material.SetFloat这个API修改即可。

操作流程

(假如我想动态修改Reflections 的状态,怎么做呢?)

  1. 找到Shader:
    如何找到Shander,请按图索印
  2. 进入Shader源码:
    如何进入Shader源码
  3. 获取属性值
    通过搜索获取属性值
  4. 代码动态控制(为便于观看效果,无脑代码走起!)
using UnityEngine;
public class TestForShader : MonoBehaviour
{
    public Material tt;
    private bool ifActive = true;
    string[] msg = new string[] { "取消Toggle勾选!", "勾选Toggle!" };
    private void Start()
    {
        tt.SetFloat("_GlossyReflections", 0f);//为了便于观察,初始化为未勾选状态
    }
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            int index = ifActive ? 1 : 0;
            Debug.Log(msg[index]);
            tt.SetFloat("_GlossyReflections", index);
            ifActive = !ifActive;
        }
    }
}

Debug输出以及效果显示:
点击鼠标,Toggle开关切换
补充,有些则必须使用EnableKeywordDisableKeyword方法处理,譬如“自发光”。

private void SetEmission(Material mat, bool emissionOn)
{
    if (emissionOn)
    {
        mat.EnableKeyword("_EMISSION");
    }
    else
    {
        mat.DisableKeyword("_EMISSION");
    }
}

原文链接

原文链接:https://www.jianshu.com/p/709b5c4f6db4

### 回答1: 语法错误:错误:找不到模块'cache-loader'。 这个错误通常是由于缺少依赖项安装不正确的模块引起的。您可以尝试重新安装缺少的模块更新您的依赖项。如果问题仍然存在,请检查您的代码并确保正确导入了所需的模块。 ### 回答2: 发生此错误,说明在 Node.js 应用程序中引用了 'cache-loader' 模块,但 Node.js 无法找到此模块。故此错误出现通常有以下原因: 1. 模块没有正确安装:'cache-loader' 模块可能没有被正确地安装。 解决方法:使用 npm install cache-loader -g 命令全局安装此模块。 2. 模块被误删除:如果曾经安装过 'cache-loader' 模块,但删除了它,可能会导致这个错误。 解决方法:重新安装 'cache-loader' 模块即可。 3. Node.js 环境版本问题:'cache-loader' 模块需要 Node.js 环境支持,如果使用的 Node.js 版本不兼容,则会提示找不到模块。 解决方法:升级降级 Node.js 环境即可。 4. 项目依赖不一致:项目中的其他依赖可能不兼容 'cache-loader' 模块,导致找不到此模块。 解决方法:尝试升级降级项目中的其他依赖以解决依赖不一致问题。 总之,如果遇到此错误,最好确定 'cache-loader' 模块是否存在,如果存在,则需要查明问题的具体原因,并采取适当的解决方法。 ### 回答3: 该错误是因为在使用Webpack构建时,无法找到所需的模块“cache-loader”。这个模块通常是用来加速Webpack构建时间的。所以当我们试图使用缓存时,却找不到该模块时,就会出现这种错误。 如果出现这种错误,通常可以通过以下步骤来解决: 第一步是确认是否已经安装了“cache-loader”模块。如果没有安装,则需要使用npm命令来安装该模块。在终端中进入项目根目录,执行以下命令:npm install cache-loader --save-dev。 第二步是检查项目中是否存在依赖该模块的代码。如果没有,则需要在Webpack配置文件中将其删除。如果存在,则需要将其正确地引入到Webpack配置中。在Webpack配置文件中找到与该模块相关的配置项,将其添加到“module.rules”“module.loaders”中。 第三步是重新启动Webpack构建,并确认是否还出现该错误。如果该错误仍然存在,则需要进一步排除问题。可以尝试升级回滚该模块的版本,尝试删除缓存和重新安装依赖项等方法。 总之,要解决这个错误,我们需要了解Webpack的基本概念和配置,掌握一些基本的调试技巧,以及有耐心、仔细地排除问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值