宽屏网站设计,优质网站建设公司哪家好,智能网站建设服务,公司网站建设空间上次更新已然四个月前#xff0c;零零散散的工作结束#xff0c;终于有时间写点东西记录一下~ 实际使用中#xff0c;经常会碰到同一个对象需要切换不同的材质#xff0c;固然可以通过C#直接替换材质球。
或者在ShaderGraph中使用Comparison配合Branch实现切换#xff…上次更新已然四个月前零零散散的工作结束终于有时间写点东西记录一下~ 实际使用中经常会碰到同一个对象需要切换不同的材质固然可以通过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 中的多个效果灵活地根据游戏状态或其他条件切换不同的渲染效果。