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

[Unity] ShaderGraph动态修改Keyword Enum,实现不同效果一键切换

上次更新已然四个月前,零零散散的工作结束,终于有时间写点东西记录一下~  


实际使用中,经常会碰到同一个对象需要切换不同的材质,固然可以通过C#直接替换材质球。

或者在ShaderGraph中使用Comparison配合Branch实现切换,如下简单演示。

不过最近还发现了另一种实现方法,即是Keyword Enum,官方示释意如下。

如何创建?

使用方法也很简单,如下所示创建一个Enum。 

这里只做最简单的颜色切换演示,实际只要把不同效果的终端链接给对应的enum项即可。 

* 注意EntryName最好对应修改,后续会用到。

切换效果如下,不知道为什么OBS录不出下拉框,大家明白就好

如何使用?

除了以上手动切换,如果需要动态控制转变,则需要通过 Material.EnableKeyword()Material.DisableKeyword() 来启用或禁用 Shader 中的关键字,从而控制 Enum 的效果。

using UnityEngine;public class KeywordEnum : MonoBehaviour
{public enum EnumTest{red,blue,green}public EnumTest enumTest;public Material material;void Update(){// 禁用所有相关关键字,避免叠加material.DisableKeyword("_ENUMCOLOR_RED");material.DisableKeyword("_ENUMCOLOR_BLUE");material.DisableKeyword("_ENUMCOLOR_GREEN");switch (enumTest){//应用对应效果case EnumTest.red:material.EnableKeyword("_ENUMCOLOR_RED");break;case EnumTest.blue:material.EnableKeyword("_ENUMCOLOR_BLUE");break;case EnumTest.green:material.EnableKeyword("_ENUMCOLOR_GREEN");break;}}
}

其中"_ENUMCOLOR_RED"这个名字取自  _枚举名_枚举变量名  。

如果不清楚的话,可以切换至Debug模式进行复制。

* 注意代码中DisableKeyword()一定要有,不然就会出现效果叠加而不显示。


最终效果和手动切换也没差,就不录演示了。

通过这种方式就可以用 Enum 来控制 Shader 中的多个效果,灵活地根据游戏状态或其他条件切换不同的渲染效果。

http://www.lryc.cn/news/509189.html

相关文章:

  • Unity开发哪里下载安卓Android-NDK-r21d,外加Android Studio打包实验
  • FFTW基本概念与安装使用
  • 【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
  • 教师如何打造专属私密成绩查询系统?
  • 【1224】C选填(字符串\0占大小,类大小函数调用,const定义常量,逗号表达式取尾,abs返回值
  • 本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——终篇
  • 复合机器人:开启智能制造新时代
  • 装饰者模式
  • 【机器学习】当教育遇上机器学习:打破传统,开启因材施教新时代
  • 【蓝桥杯每日一题】分糖果——DFS
  • information_schema是什么?
  • 案例分析-THC7984设计问题报告
  • HarmonyOS NEXT 技术实践-基于基础视觉服务的多目标识别
  • 【python】银行客户流失预测预处理部分,独热编码·标签编码·数据离散化处理·数据筛选·数据分割
  • 使用 docker ps 查不到刚刚创建的容器
  • vue2+element 前端表格下载
  • MySQL使用LOAD DATA INFILE方式导入文本文件
  • 【从零开始入门unity游戏开发之——unity篇02】unity6基础入门——软件下载安装、Unity Hub配置、安装unity编辑器、许可证管理
  • SpringBootWeb 篇-深入了解 SpringBoot + Vue 的前后端分离项目部署上线与 Nginx 配置文件结构
  • 优化程序中的数据:从代数到向量解
  • 【Web】2024“国城杯”网络安全挑战大赛决赛题解(全)
  • 基于ceres优化的3d激光雷达开源算法
  • 【FAQ】HarmonyOS SDK 闭源开放能力 — Vision Kit(2)
  • 【LeetCode】726、原子的数量
  • VMware虚拟机三种网络工作模式
  • 14-zookeeper环境搭建
  • [搜广推]王树森推荐系统笔记——矩阵补充最近邻查找
  • Unity3D * 粒子特效 * Particle System
  • 【基础篇】1. JasperSoft Studio编辑器与报表属性介绍
  • 数据结构:算法篇:快速排序;直接插入排序