import { _decorator, Component, Node, Vec3, Enum } from 'cc'; const { ccclass, property } = _decorator; enum ROAD_POINT_TYPE { NORMAL = 1, START, GREETING, GOODBYE, END, AI_START } Enum(ROAD_POINT_TYPE); enum ROAD_MOVE_TYPE { LINE = 1, BEND } Enum(ROAD_MOVE_TYPE);//序列化枚举 @ccclass('RoadPoint') export class RoadPoint extends Component { public static RoadPointType = ROAD_POINT_TYPE; public static RoadMoveType = ROAD_MOVE_TYPE; @property({ type: ROAD_POINT_TYPE, displayOrder: 1, tooltip:"点的类型" }) type = ROAD_POINT_TYPE.NORMAL; @property({ type: Node, displayOrder:2 // , // visible: function (this: RoadPoint) { // return this.type === ROAD_POINT_TYPE.END; // } }) nextStation: Node | null = null; @property({ type: ROAD_MOVE_TYPE, displayOrder: 3 // , // visible: function (this: RoadPoint) { // return this.type === ROAD_POINT_TYPE.END; // } }) move_type = ROAD_MOVE_TYPE.LINE; @property({ type: Vec3, displayOrder: 4 // , // visible: function (this: RoadPoint) { // return this.type === ROAD_POINT_TYPE.GREETING || this.type === ROAD_POINT_TYPE.GOODBYE; // } }) direction = new Vec3(1, 0, 0);//定义哪边开车门 拉客/送客 左边1 右边-1 @property({ displayOrder: 5 // , // visible: function (this: RoadPoint) { // return this.type === ROAD_POINT_TYPE.AI_START; // } }) interval = 3; @property({ displayOrder: 6 // , // visible: function (this: RoadPoint) { // return this.type === ROAD_POINT_TYPE.AI_START; // } }) delayTime = 0; @property({ displayOrder: 7 // , // visible: function (this: RoadPoint) { // return this.type === ROAD_POINT_TYPE.AI_START; // } }) speed = 0.05; @property({ displayOrder: 8 // , // visible: function (this: RoadPoint) { // return this.type === ROAD_POINT_TYPE.AI_START; // } }) cars = "201"; @property({ displayOrder: 9 // , // visible: function (this: RoadPoint) { // return this.type !== ROAD_POINT_TYPE.END && this.move_type === ROAD_MOVE_TYPE.CURVE; // } }) clockwise = true; }
import { error, _decorator } from "cc"; const { ccclass } = _decorator; interface IEventData{ func:Function; target:any; } interface IEvent{ [eventName:string] : IEventData[]; } @ccclass("EventListener") export class EventListener { public static handle :IEvent = {}; public static on(eventName :string,cb:Function,target?:any){ if(!this.handle[eventName]){ this.handle[eventName] = []; } const data:IEventData = {func:cb,target:target} this.handle[eventName].push(data); } public static off(eventName :string ,cb:Function,target?:any){ const list = this.handle[eventName]; if(!list||list.length<=0){ return; } for(let i=0;i<list.length;i++){ const event = list[i]; if(event.func===cb&& (!target||target==event.target)){ list.splice(i,1); break; } } } public static dispatchEvent(eventName:string,...args:any){ const list = this.handle[eventName]; if(!list||list.length<=0){ return; } for(let i=0;i<list.length;i++){ const event = list[i]; event.func.apply(event.target,args); } } };
站长微信:xiaomao0055
站长QQ:14496453