1、文件夹分类define、types、manager、common
define:可全局调用,存放枚举、事件名常量、配置标识等,无业务逻辑、无组件,仅包含常量与类型声明。
【枚举】 /* 用枚举法记录游戏状态 */ export enum Game_end { None, // 未结算 Win, // 胜利 Lose, // 失败 stop_or_start // 游戏暂停/继续 }; 【导入】 import { 枚举名 } from "./define/文件路径"; 【使用】 private 自定义名: 枚举名 = 枚举名.枚举子属性;【事件名常量】 /* 用事件名常量法记录游戏状态 */ export const EVENT = { GAME_WIN: "game_win", GAME_LOSE: "game_lose", GAME_START: "game_start", GAME_PAUSE: "game_pause" } 【导入】 import { 常量名 } from "./define/文件路径"; 【使用】 // 发送事件 this.节点名.emit(EVENT.GAME_WIN); // 监听事件 this.节点名.on(EVENT.GAME_WIN, ()=>{ console.log("游戏胜利"); }) 【注意事项】 ⭐局部使用时,在哪一个节点 emit,就必须在哪同一个节点 on 监听。 ⭐全局使用时,可写成director.emit('场景名', EVENT.GAME_WIN); ⭐何为节点?例如:{ @property(Node) private aaa: Node = null; }中,这个aaa就是节点名【配置标识】 /* 本地存储的键名配置标识(CONFIG_KEY 只放key) */ export const CONFIG_KEY = { GAME_STATE: "GameState" }; 【导入】 import { 配置标识名 } from "./define/文件路径"; 【使用】 // 存入本地:key是 CONFIG_KEY.GAME_STATE,值是对应的字符串 sys.localStorage.setItem(CONFIG_KEY.GAME_STATE, GAME_STATE_STR[curState]); // 读取回来 const saveStr = sys.localStorage.getItem(CONFIG_KEY.GAME_STATE);types:可全局调用,存放TS自定义类型声明(interface、type别名等)。
【ts文件】 export interface PlayerData { uid: string; level: number; vip: boolean; } 【导入】 在“export class 文件名 extends Component”后加上“implements 接口名” 【使用】 可直接将接口子属性复制进去 【例子】 export class 文件名 extends Component implements PlayerData { uid: string; level: number; vip: boolean; }manager:可全局调用,用于存放全局可复用调用脚本。
【ts文件】 编写逻辑程序 【导入】 import { 逻辑名 } from "./manager/文件路径"; 【使用】 ts文件名.instance.文件名中的函数();common:不可全局调用,仅作为组件挂载到游戏引擎中,用于存放通用组件、复用脚本。
如下图所示,直接调用即可