mirror of
https://github.com/Gongxh0901/kunpolibrary
synced 2025-04-22 11:28:40 +00:00
208 lines
7.2 KiB
Markdown
208 lines
7.2 KiB
Markdown
|
## 给纯小白的使用手册
|
|||
|
|
|||
|
#### 项目配置
|
|||
|
|
|||
|
1. 新建项目,到项目根目录下执行命令
|
|||
|
|
|||
|
```bash
|
|||
|
npm install kunpocc
|
|||
|
```
|
|||
|
|
|||
|
2. 重启creator
|
|||
|
|
|||
|
3. 在你的脚本目录下,写一个header.ts脚本,引入`kunpocc`和`fgui`库,并导出,内容如下
|
|||
|
|
|||
|
```typescript
|
|||
|
|
|||
|
import * as fgui from "fairygui-cc";
|
|||
|
import * as kunpo from "kunpocc";
|
|||
|
|
|||
|
export { fgui, kunpo };
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
4. 编写入口脚本,
|
|||
|
|
|||
|
```typescript
|
|||
|
import { _decorator } from "cc";
|
|||
|
/** 引入kunpocc入口 */
|
|||
|
import { fgui, kunpo } from './header';
|
|||
|
|
|||
|
const { ccclass, property, menu } = _decorator;
|
|||
|
@ccclass("GameEntry")
|
|||
|
@menu("kunpo/GameEntry")
|
|||
|
export class GameEntry extends kunpo.CocosEntry {
|
|||
|
onInit(): void {
|
|||
|
kunpo.log("GameEntry onInit");
|
|||
|
}
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
5. 创建一个scene
|
|||
|
|
|||
|
6. 在新创建的scene中创建入口节点`GameEntry`,创建UI模块节点 `UI` 、窗口容器节点`window` 窗口容器节点可以有多个, 并关联第4步写的入口脚本
|
|||
|
|
|||
|

|
|||
|
|
|||
|
7. 项目配置完毕,点击运行,此时控制台就能输出
|
|||
|
|
|||
|
```text
|
|||
|
GameEntry onInit
|
|||
|
```
|
|||
|
|
|||
|
|
|||
|
|
|||
|
#### 打开第一个界面,需要自学fgui
|
|||
|
|
|||
|
[fgui官方文档: https://www.fairygui.com/docs/editor](https://www.fairygui.com/docs/editor)
|
|||
|
|
|||
|
1. 使用fgui创建一个包,包下新建一个组件,放置一些内容进去, 比如包名是`Home`, 组件名是`HomeWindow`, 注意:**组件需要设置为导出**
|
|||
|
|
|||
|
2. 导出fgui到creator项目的 `resources`目录下一个ui文件夹下
|
|||
|
|
|||
|

|
|||
|
|
|||
|
3. 写 `HomeWindow`窗口脚本
|
|||
|
|
|||
|
```typescript
|
|||
|
import { fgui, kunpo } from "../header";
|
|||
|
const { uiclass } = kunpo._uidecorator;
|
|||
|
|
|||
|
/**
|
|||
|
* 窗口装饰器
|
|||
|
* @param {string} groupName 窗口容器节点名称
|
|||
|
* @param {string} pkgName fgui包名
|
|||
|
* @param {string} name 窗口名 (与fgui中的组件名一一对应)
|
|||
|
*/
|
|||
|
@uiclass("Window", "Home", "HomeWindow")
|
|||
|
export class HomeWindow extends kunpo.Window {
|
|||
|
protected onInit(): void {
|
|||
|
// 这两行代表的含义可以跳转进去自己看下,有完整的注释
|
|||
|
this.adapterType = kunpo.AdapterType.Bang;
|
|||
|
this.type = kunpo.WindowType.CloseAll;
|
|||
|
/** 窗口下层遮罩的透明度 */
|
|||
|
this.bgAlpha = 0;
|
|||
|
}
|
|||
|
|
|||
|
protected onShow(userdata?: any): void {
|
|||
|
kunpo.log("HomeWindow onShow:", userdata);
|
|||
|
}
|
|||
|
|
|||
|
// 这个是窗口header,具体的可以到配套的demo中查看
|
|||
|
// public getHeaderInfo(): kunpo.WindowHeaderInfo {
|
|||
|
// return kunpo.WindowHeaderInfo.create("WindowHeader", "aaa");
|
|||
|
// }
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
|
|||
|
|
|||
|
4. 配置UI相关内容,新建一个脚本文件,可以起名叫 `UIPackageRegister.ts`, 内容如下,根据自己的需求,自由配置
|
|||
|
|
|||
|
```typescript
|
|||
|
import { kunpo } from './header';
|
|||
|
export class UIPackageRegister {
|
|||
|
public static Register(): void {
|
|||
|
kunpo.WindowManager.initPackageConfig({
|
|||
|
config: {
|
|||
|
/** fgui导出的界面资源所在resources中的路径 */
|
|||
|
uiPath: "ui",
|
|||
|
/**
|
|||
|
* 手动管理资源的包
|
|||
|
* 1. 用于基础UI包, 提供一些最基础的组件,所有其他包都可能引用其中的内容
|
|||
|
* 2. 资源header所在的包
|
|||
|
* 3. 用于一些特殊场景, 比如需要和其他资源一起加载
|
|||
|
*/
|
|||
|
manualPackages: ["Home"],
|
|||
|
/**
|
|||
|
* 不推荐配置 只是提供一种特殊需求的实现方式
|
|||
|
* 窗口引用到其他包中的资源 需要的配置信息
|
|||
|
*/
|
|||
|
linkPackages: {},
|
|||
|
/**
|
|||
|
* 关闭界面后,需要立即释放资源的包名(建议尽量少)
|
|||
|
* 一般不建议包进行频繁装载卸载,因为每次装载卸载必然是要消耗CPU时间(意味着耗电)和产生大量GC的。UI系统占用的内存是可以精确估算的,你可以按照包的使用频率设定哪些包是需要立即释放的。
|
|||
|
* 不包括手动管理的包
|
|||
|
*/
|
|||
|
imReleasePackages: [],
|
|||
|
},
|
|||
|
showWaitWindow: this._showWaitWindow,
|
|||
|
hideWaitWindow: this._hideWaitWindow,
|
|||
|
fail: this._fail,
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
private static _showWaitWindow(): void {
|
|||
|
console.log("显示资源加载等待窗");
|
|||
|
// kunpo.WindowManager.showWindow("LoadUIWindow");
|
|||
|
}
|
|||
|
|
|||
|
private static _hideWaitWindow(): void {
|
|||
|
console.log("关闭资源加载等待窗");
|
|||
|
// kunpo.WindowManager.closeWindow("LoadUIWindow");
|
|||
|
}
|
|||
|
|
|||
|
private static _fail(windowName: string, errmsg: string, pkgs: string[]): void {
|
|||
|
console.log("资源加载失败", windowName, errmsg, pkgs);
|
|||
|
}
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
5. 完善入口脚本 `GameEntry`
|
|||
|
|
|||
|
```typescript
|
|||
|
import { _decorator } from "cc";
|
|||
|
/** 引入kunpocc入口 */
|
|||
|
import { fgui, kunpo } from './header';
|
|||
|
import { UIPackageRegister } from './UIPackageRegister';
|
|||
|
|
|||
|
const { ccclass, property, menu } = _decorator;
|
|||
|
@ccclass("GameEntry")
|
|||
|
@menu("kunpo/GameEntry")
|
|||
|
export class GameEntry extends kunpo.CocosEntry {
|
|||
|
onInit(): void {
|
|||
|
kunpo.log("GameEntry onInit");
|
|||
|
// 这里加上第4步写的脚本的注册
|
|||
|
UIPackageRegister.Register();
|
|||
|
// 写一个加载资源的函数,用来加载游戏初始用到的资源
|
|||
|
this.loadBaseResources();
|
|||
|
}
|
|||
|
|
|||
|
/** 1. 加载基础资源 */
|
|||
|
private loadBaseResources(): void {
|
|||
|
// 这里为了不在游戏初始场景中显示界面遮罩,手动加载刚才创建的Home包资源
|
|||
|
let paths: kunpo.IAssetConfig[] = [
|
|||
|
{ path: "ui/Home_atlas0", type: cc.Asset, isFile: true },
|
|||
|
{ path: "ui/Home", type: cc.Asset, isFile: true },
|
|||
|
];
|
|||
|
let loader = new kunpo.AssetLoader("load");
|
|||
|
loader.start({
|
|||
|
configs: paths,
|
|||
|
complete: () => {
|
|||
|
// 手动加载资源的fgui包
|
|||
|
fgui.UIPackage.addPackage("ui/Home");
|
|||
|
|
|||
|
this.allTaskFinish();
|
|||
|
},
|
|||
|
fail: (msg: string, err: Error) => {
|
|||
|
|
|||
|
},
|
|||
|
progress: (percent: number) => {
|
|||
|
// 这里是加载进度 可以给首场景添加一个进度条,用来显示加载进度
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
private allTaskFinish(): void {
|
|||
|
// 显示第一个窗口 (showWindowIm 这个接口用于显示已加载过资源的窗口)
|
|||
|
kunpo.WindowManager.showWindowIm("HomeWindow", "这是一个测试窗口");
|
|||
|
|
|||
|
// (showWindow 这个接口用于显示未加载资源的窗口,会自动加载UI包)
|
|||
|
// kunpo.WindowManager.showWindow("HomeWindow", "这是一个测试窗口");
|
|||
|
}
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
6. 再次运行,第一个界面就可以显示出来了
|
|||
|
|