ShaderHelper2 组件升级,支持自动枚举参数!

ShaderHelper2 组件新体验视频演示: https://www.bilibili.com/video/av69314195/

ShaderHelper2 组件我们已经介绍过两次了,不了解的伙伴可以看下面两篇文章:

  1. 新版ShaderHelper,终于支持 Creator 2.1.2 了!
  2. ShaderHelper2正式回归,并全面使用TypeScript语言!

本文主要介绍这次改进的地方。

虽然 ShaderHelper2 支持了在 Cocos Creator 2.1.2 以上引擎版本使用,使用体验也得到了改进,但是 Shawn 编写的组件的理念是希望能为策划、美术以及非程序员提供内容生产的能力,在易用性上再进一步,改进功能点如下:

自动隐藏props属性

当一个Shader Effect中不含有可调节的参数,ShaderHelper 组件将不会显示props属性到属性面板上,看下图:

file

可以看到上图中,Dissolve特效组件属性非常简洁,仅有一个 Program 属性,我们仍然可以使用ShaderTime组件调节动态 time 参数。

自动枚举参数到props属性

如果一个Shader Effect 是含有参数的,当切换 Program 属性时将会自动刷新 props 属性,枚举出Shader 的可控参数,而且参数的Key值是只读,不会因为误操作修改出错,看下图:

file

props属性中的参数 value 同样支持动态调节,可以在场景编辑器中实时看到修改后的效果。

优化提示警告

之前的版本,在切换不同的特效时当Effect中并没有定义USE_TEXTURE时会有警告,看下图:

file

通过对 EffectAsstes 属性检查,将此警告屏蔽掉了,以免在使用过程中产生产生烦人的提示,检查代码如下:

1 //在材质对象上开启USE_TEXTURE定义 2let defineUserTexture = !!effectAsset.shaders.find(shader => shader.defines.find(def => def.name === 'USE_TEXTURE')); 3if (defineUserTexture) { 4 material.define('USE_TEXTURE', true); 5}

同样,如果选择非动态Shader,同时为节点添加了 ShaderTime 组件,也会出现类似上面的警告,同样得到的修正:

1protected update(dt) { 2 this._material = this.getComponent(cc.Sprite).sharedMaterials[0]; 3 if (this.node.active && this._material && this._material.effect._properties.time) { 4 this._setShaderTime(dt); 5 } 6}

代码Github地址: https://github.com/ShawnZhang2015/ShaderHelper2

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )