[add] First
This commit is contained in:
61
assets/Resources/script/ShaderController.ts
Normal file
61
assets/Resources/script/ShaderController.ts
Normal file
@@ -0,0 +1,61 @@
|
||||
const {ccclass,property} = cc._decorator;
|
||||
|
||||
@ccclass
|
||||
export default class ShaderTime extends cc.Component
|
||||
{
|
||||
/**记录时间 */
|
||||
private time: number;
|
||||
private sprite: cc.Sprite;
|
||||
/**精灵上的材质 */
|
||||
private material: any;
|
||||
/**增加还是减少 */
|
||||
private IsAdd: boolean;
|
||||
|
||||
/**速度 */
|
||||
@property({type: cc.Float,tooltip: "速度"})
|
||||
speed = 1.0;
|
||||
|
||||
/**是否循环 */
|
||||
@property({tooltip: "是否循环"})
|
||||
isLoop: boolean = false;
|
||||
|
||||
/**是否设置UV到effect(解决动态合图的bug) */
|
||||
@property({tooltip: "是否设置UV到effect(解决动态合图的bug)"})
|
||||
isSetUv: boolean = false;
|
||||
|
||||
start()
|
||||
{
|
||||
this.time = 0;
|
||||
this.IsAdd = true;
|
||||
this.sprite = this.node.getComponent(cc.Sprite);
|
||||
this.material = this.sprite.getMaterial(0); //获取材质
|
||||
}
|
||||
|
||||
update(dt)
|
||||
{
|
||||
this.material.setProperty("u_time",this.time); //设置材质对应的属性
|
||||
(this.isLoop && !this.IsAdd) ? this.time -= dt * this.speed : this.time += dt * this.speed;
|
||||
if(this.isSetUv)
|
||||
{ //传递UV 参数到 effect
|
||||
let frame = this.sprite.spriteFrame as any;
|
||||
let l = 0,r = 0,b = 1,t = 1;
|
||||
l = frame.uv[0];
|
||||
t = frame.uv[5];
|
||||
r = frame.uv[6];
|
||||
b = frame.uv[3];
|
||||
let u_UVoffset = new cc.Vec4(l,t,r,b);
|
||||
let u_rotated = frame.isRotated() ? 1.0 : 0.0;
|
||||
this.material.setProperty("u_UVoffset",u_UVoffset);
|
||||
this.material.setProperty("u_rotated",u_rotated);
|
||||
}
|
||||
cc.log(this.time);
|
||||
if(this.time > 1.5)
|
||||
{
|
||||
this.IsAdd = false;
|
||||
}
|
||||
else if(this.time < -0.5)
|
||||
{
|
||||
this.IsAdd = true;
|
||||
}
|
||||
}
|
||||
}
|
9
assets/Resources/script/ShaderController.ts.meta
Normal file
9
assets/Resources/script/ShaderController.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "1.0.8",
|
||||
"uuid": "ee8e4708-0626-4367-84ad-a44d4465fbb3",
|
||||
"isPlugin": false,
|
||||
"loadPluginInWeb": true,
|
||||
"loadPluginInNative": true,
|
||||
"loadPluginInEditor": false,
|
||||
"subMetas": {}
|
||||
}
|
Reference in New Issue
Block a user