62 lines
1.7 KiB
TypeScript
62 lines
1.7 KiB
TypeScript
const { ccclass, property } = cc._decorator;
|
|
|
|
@ccclass
|
|
export default class HSL extends cc.Component {
|
|
editor: {
|
|
executeInEditMode: true,//編輯器裡運行腳本代碼
|
|
}
|
|
@property(cc.EffectAsset)
|
|
effectAsset: cc.EffectAsset = null;
|
|
|
|
@property({ range: [-180, 180], slide: true })
|
|
dH: number = 0;
|
|
|
|
@property({ range: [-1, 1], slide: true })
|
|
dS: number = 0;
|
|
|
|
@property({ range: [-1, 1], slide: true })
|
|
dL: number = 0;
|
|
|
|
@property({ range: [0, 1], slide: true })
|
|
dA: number = 1;
|
|
|
|
private render: cc.RenderComponent;
|
|
private material: cc.Material;
|
|
private isLoaded: boolean = false;
|
|
|
|
onLoad() {
|
|
if (!this.effectAsset) {
|
|
cc.log("你需要拖進來一個效果");
|
|
return;
|
|
}
|
|
this.render = this.node.getComponent(cc.RenderComponent);
|
|
if (!this.render) {
|
|
cc.log("結點必須有RenderComponent組件");
|
|
return;
|
|
}
|
|
this.material = cc.Material.create(this.effectAsset, 0);
|
|
this.material.name = this.effectAsset.name;
|
|
if (this.material.getDefine("USE_TEXTURE")) {
|
|
this.material.define("USE_TEXTURE", true);
|
|
}
|
|
if (this.material.getDefine("USE_EFFECT")) {
|
|
this.material.define("USE_EFFECT", true);
|
|
}
|
|
this.render.setMaterial(0, this.material);
|
|
this.isLoaded = true;
|
|
this.reset();
|
|
}
|
|
|
|
reset() {
|
|
if (!this.isLoaded) {
|
|
return;
|
|
}
|
|
if (!this.dH) {
|
|
this.dH = 0;
|
|
}
|
|
this.material.setProperty("u_dH", this.dH);
|
|
this.material.setProperty("u_dS", this.dS);
|
|
this.material.setProperty("u_dL", this.dL);
|
|
this.material.setProperty("u_dA", this.dA);
|
|
}
|
|
} |