目录:
一 创建第三方库
二 TypeScript库
三 JavaScript库
四 第三方库制作在大型RPG中的实际应用
参考:
目标:
本文目的是将现有游戏的框架制作成第三方库,减少编译时间。不想让别人看到源码,降低可读性。
一 创建第三方库
在任意文件夹,我这里创建个test文件夹,shift+右键,打开命令行窗口,输入
egret create_lib demo
在test文件夹下会生成一个demo文件夹,里面有package.json和tsconfig.json文件
在demo文件夹里新建src,bin,typings,libs文件夹。
二 TypeScript库
该方法是使用.ts文件制作第三方库
将ts文件放到src文件夹下,这里我用了框架用的几个管理类。场景管理,图层管理,事件管理类等作为测试。
修改pagckage.json
{
"name": "demo",
"compilerVersion": "5.2.22"
}
修改tsconfig.json文件
{
"compilerOptions": {
"target": "es5",
"noImplicitAny": false,
"sourceMap": false,
"declaration": true, //是否生成.d.ts文件,如果是typescript库设置为true,如果是javascript库设置为false
"outFile": "bin/demo.js",
"allowJs": false //是否允许编译js文件。如果是typescript库设置为false,如果是javascript库设置为true
},
"files": [ //libs为依赖的egret库,用.d.ts文件即可,因为管理类中使用了eui, egret.Stage等。
"libs/egret.d.ts",
"libs/eui.d.ts",
"src/BaseSingleClass.ts",
"src/LayerManager.ts",
"src/EventManager.ts",
"src/BaseScene.ts",
"src/SceneManager.ts"
]
}
直接用include代替files也可以
{
"compilerOptions": {
"target": "es5",
"noImplicitAny": false,
"sourceMap": false,
"declaration": true,
"outFile": "bin/demo.js",
"allowJs": false
},
"include":["src","libs"]
}
命令行输入
egret build demo
在bin文件夹中生成了如下文件
新建一个Egret项目,名为project,来使用这个第三方库
修改项目的egretProperties.json文件,增加第三方库的引用,并编译一次引擎。
在代码中使用我自己写的EventManager事件类,成功输出"触发事件"。表示第三方库可以正常使用了。
protected createGameScene(): void {
EventMananger.getInstance().addEvent("test", this.onTestHandler, this); //监听test事件
EventMananger.getInstance().sendEvent("test"); //派发test事件
}
public onTestHandler(){
console.log("触发事件"); //打印触发事件
}
三 JavaScript库
该方法是将.js文件制作成第三方库
这里我们直接使用上文中导出的demo.js和demo.d.ts做为例子
将demo.js放到src目录下
将demo.d.ts放到typings目录下
修改package.json文件
{
"name": "demo222",
"compilerVersion": "5.2.22",
"typings":"typings/demo.d.ts"
}
修改tsconfig.json文件
{
"compilerOptions": {
"target": "es5",
"noImplicitAny": false,
"sourceMap": false,
"declaration": false, //false 不生成.d.ts文件
"outFile": "bin/demo.js",
"allowJs": true //true 允许编译js文件
},
"include":["src","libs"]
}
命令行输入
egret build demo
bin文件夹下生成
第三方库使用方法同上文,这里不再说了。
四 第三方库制作在大型RPG中的实际应用
这里我找了个传奇游戏的源码,因为源码比较早,所以它的第三方库的制作是旧版。但是原理还是一样的,我们看一下第三方库的制作在大型rpg中的应用。
项目中,游戏每一个模块modules,都被制作成了一个第三方库,如下图:
第三方库制作后,.d.ts和js和min.js文件被放在了libs目录下,并在index.html中被引用。