消除我特牛
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
xiaochuwoteniu/插件/Particle/ParticleUtils.ts

114 lines
2.7 KiB

import MyParticleSimulator from "./MyParticleSimulator";
const { ccclass, property } = cc._decorator;
@ccclass
export default class ParticleUtils extends cc.Component {
@property(cc.Integer)
_frameNums: number = 1;
@property({
type: cc.Integer,
displayName: '纹理帧数'
})
set frameNums(val) {
this._frameNums = val;
this.updateSysInfo();
}
get frameNums(): number {
return this._frameNums;
}
@property(cc.Boolean)
_aufoRate: boolean = false;
@property({
type: cc.Boolean,
displayName: '自动化帧数'
})
set aufoRate(val) {
this._aufoRate = val;
this.updateSysInfo();
}
get aufoRate(): boolean {
return this._aufoRate;
}
@property(cc.Integer)
_animRate: number = 60;
@property({
type: cc.Integer,
displayName: '动画帧数'
})
set animRate(val) {
this._animRate = val;
this.updateSysInfo();
}
get animRate(): number {
return this._animRate;
}
_particleUtils: cc.ParticleSystem = null;
updateSysInfo() {
if (this._particleUtils == null) {
this._particleUtils = this.node.getComponent(cc.ParticleSystem);
}
if (this._aufoRate) {
this._particleUtils['setParticleFrameInfo'](this._frameNums, -1);
} else {
this._particleUtils['setParticleFrameInfo'](this._frameNums, this._animRate);
}
}
onLoad() {
if (this._particleUtils == null) {
this._particleUtils = this.node.getComponent(cc.ParticleSystem);
}
if (CC_EDITOR) {
cc.log("当前是在编辑器内!");
if (this._aufoRate) {
this._particleUtils['setParticleFrameInfo'](this._frameNums, -1);
} else {
this._particleUtils['setParticleFrameInfo'](this._frameNums, this._animRate);
}
} else {
cc.log("不是编辑器,将本身原来的删除,然后换成新的内容");
// let particleSystem = this.node.addComponent(MyParticleSystem);
this._particleUtils['_simulator']._uvFilled = 0;
delete this._particleUtils['_simulator'];
this._particleUtils['_simulator'] = new MyParticleSimulator(this._particleUtils, this._frameNums, this._animRate);
this._particleUtils['_simulator'].active = true;
// this._simulator
// // reset uv data so next time simulator will refill buffer uv info when exit edit mode from prefab.
// this._simulator._uvFilled = 0;
// this.node.removeComponent(cc.ParticleSystem);
}
}
}