框架的模块开发
目录
基本游戏框架应包含的模块
我认为一个基本的游戏框架应该包含一些常用且适合日常开发的模块。无需过度封装,以免框架变得臃肿不堪。即使将来需要扩展框架,也应保持模块间的独立性,确保可以灵活地增删模块。
推荐:
1、日志模块
2、数据模块
3、事件模块
4、任务模块
5、分包模块
6、资源模块
7、音频模块
8、UI模块
9、输入模块
10、网络模块
11、多语言模块
12、常用工具,如:加解密、格式化等
游戏框架开发注意事项
使用最新API:尽量使用最新版本的API,以利用最新功能和性能优化。
类型安全:确保代码的类型安全,减少运行时错误。
注释说明:提供基本的注释,帮助他人理解代码。
日志输出:添加必要的日志输出,方便调试和问题追踪。
统一风格:保持变量、函数和注释风格的一致性。
TypeScript编码规范
缩进:使用4个空格,便于阅读。
大驼峰命名:用于类、枚举和接口,如
Person
、ColorEnum
、IPerson
。小驼峰命名:用于函数、属性、变量和参数,如
getFirstName()
、lastName
。常量命名:使用全大写和下划线分隔,如
MAX_VALUE
、COLOR_RED
。访问修饰词:除非必要,不用加访问修饰词,默认
public
,按需使用private
和protected
。类型注解:为函数参数和返回值添加类型注解。
接口与类型别名:使用
interface
定义对象接口,以I
开头;使用type
定义类型别名。空格和引号:关键字和圆括号之间加空格,使用单引号。
注释风格:使用JSDoc风格注释,便于文档生成和代码理解。
import { _decorator, Component, Node } from 'cc';
const { ccclass, property } = _decorator;
/**
* @interface IPerson
* 接口,使用大驼峰命名和以I开头
*/
interface IPerson {
firstName: string;
lastName: string;
getFullName(): string;
}
/**
* @class Person
* 实现IPerson接口的类
* 使用大驼峰命名
*/
@ccclass('Person')
class Person extends Component implements IPerson {
@property
firstName: string = ''; // 小驼峰命名,默认public
@property
lastName: string = ''; // 小驼峰命名,默认public
/**
* 获取全名
* @returns {string} 返回全名
* 使用JSDoc风格注释
*/
getFullName(): string { // 类型注解,小驼峰命名,默认public
return `${this.firstName} ${this.lastName}`;
}
}
/**
* @class MainController
* 主控制器类
* 使用大驼峰命名
*/
@ccclass('MainController')
class MainController extends Component {
@property(Node)
private personNode: Node | null = null; // 小驼峰命名,使用private
/**
* 初始化方法
* 使用JSDoc风格注释
*/
start(): void {
const person: IPerson = this.personNode?.getComponent(Person) as IPerson; // 类型注解
if (perso) {
console.log('输出内容'); // 使用单引号,使用双引号
console.log(person.getFullName()); // 小驼峰命名
}
}
}
export { Person, MainController };
通过遵循这些原则和规范,可以创建一个高效、可维护的游戏框架。
作者:ccs2d.com 创建时间:2024-09-21 06:04
最后编辑:ccs2d.com 更新时间:2024-10-06 09:43
最后编辑:ccs2d.com 更新时间:2024-10-06 09:43