下面我们来个最简单粗暴的知识库文件导入,看图:
一、添加知识库名称
二、另类知识库文件导入
1、比如我的ccc引擎包路径为:
D:\DevSoft\cocos\editors\Creator\3.8.5\resources\resources\3d\engine\cocos2、然后我们在导入的时候先定位到这个目录
3、然后使用搜索:【*.ts】,再Ctrl+A 把这些源码文件都给弄进去,哈哈
4、导入完毕,然后把目录也添加到AI
5、接着把ccc的api网址给加进去:
Cocos Creator 3.8 用户手册 | Cocos Creator
Cocos Creator API
> 补充说明:
> 一定要如图3点地方选择全部(*) 文件,不然ts文件不会显示、搜索也搜索不到!
> 一定要如图3点地方选择全部(*) 文件,不然ts文件不会显示、搜索也搜索不到!
> 一定要如图3点地方选择全部(*) 文件,不然ts文件不会显示、搜索也搜索不到!
图中导入后要等待AI分析,蓝色小圆圈代表还在学习中,绿色的勾√代表是学习好的!
等待全部学习完毕,就可以使用AI进行提问了,我们先测试下一啊!!
1. 分包管理器类
首先,我们创建一个分包管理器类,用于处理分包的加载和更新。
import { _decorator, Component, resources, AssetManager, Asset, error, log, director, SceneAsset, progressives } from 'cc';
const { ccclass, property } = _decorator;
@ccclass('PackageManager')
export class PackageManager extends Component {
@property({ tooltip: '分包配置文件路径', type: [String] })
packageConfigPaths: string[] = [];
private _packageConfig: { [name: string]: string[] } = {};
private _loadedPackages: Set<string> = new Set();
start() {
this.loadPackageConfig();
}
private async loadPackageConfig() {
for (const path of this.packageConfigPaths) {
try {
const config = await resources.loadAsync<Asset>(path, Asset);
const json = JSON.parse(config.text);
for (const packageName in json) {
this._packageConfig[packageName] = json[packageName];
}
} catch (err) {
error(`Failed to load package config from ${path}: ${err}`);
}
}
log('Package config loaded:', this._packageConfig);
}
public async loadPackage(packageName: string) {
if (this._loadedPackages.has(packageName)) {
log(`Package ${packageName} is already loaded.`);
return;
}
const packageAssets = this._packageConfig[packageName];
if (!packageAssets) {
error(`Package ${packageName} not found in package config.`);
return;
}
try {
await AssetManager.instance.loadBundle(packageName, (err, bundle) => {
if (err) {
error(`Failed to load bundle for package ${packageName}: ${err}`);
} else {
log(`Bundle for package ${packageName} loaded successfully.`);
}
});
for (const assetPath of packageAssets) {
await resources.loadAsync(assetPath);
log(`Asset ${assetPath} loaded successfully.`);
}
this._loadedPackages.add(packageName);
log(`Package ${packageName} loaded successfully.`);
} catch (err) {
error(`Failed to load package ${packageName}: ${err}`);
}
}
public async unloadPackage(packageName: string) {
if (!this._loadedPackages.has(packageName)) {
log(`Package ${packageName} is not loaded.`);
return;
}
const packageAssets = this._packageConfig[packageName];
if (!packageAssets) {
error(`Package ${packageName} not found in package config.`);
return;
}
for (const assetPath of packageAssets) {
resources.release(assetPath);
log(`Asset ${assetPath} released successfully.`);
}
AssetManager.instance.releaseBundle(packageName);
this._loadedPackages.delete(packageName);
log(`Package ${packageName} unloaded successfully.`);
}
public async loadScene(sceneName: string) {
const packageName = this.getPackageForScene(sceneName);
if (packageName) {
await this.loadPackage(packageName);
}
try {
await director.loadSceneAsync(sceneName);
log(`Scene ${sceneName} loaded successfully.`);
} catch (err) {
error(`Failed to load scene ${sceneName}: ${err}`);
}
}
private getPackageForScene(sceneName: string): string | null {
for (const packageName in this._packageConfig) {
const packageAssets = this._packageConfig[packageName];
if (packageAssets.includes(sceneName)) {
return packageName;
}
}
return null;
}
}
2. 分包配置文件
假设我们有一个分包配置文件 packageConfig.json ,内容如下:
{
"main": [
"prefabs/player",
"prefabs/enemy",
"scenes/main"
],
"level1": [
"prefabs/level1/obstacle",
"prefabs/level1/boss",
"scenes/level1"
],
"level2": [
"prefabs/level2/obstacle",
"prefabs/level2/boss",
"scenes/level2"
]
}
3. 使用分包管理器
在你的游戏场景中,你可以通过以下方式使用 PackageManager :
import { _decorator, Component, director } from ‘cc’;
const { ccclass, property } = _decorator;@ccclass(‘GameController’)
export class GameController extends Component {
@property({ type: PackageManager })
packageManager: PackageManager = null;start() { this.packageManager.loadPackage('main'); } public async loadLevel1() { await this.packageManager.loadScene('level1'); } public async unloadLevel1() { await this.packageManager.unloadPackage('level1'); }}
4. 配置项目
确保在 Cocos Creator 项目中正确配置分包。你可以在 build.json 中指定分包:
{
"packages": [
{
"name": "main",
"include": [
"prefabs/player",
"prefabs/enemy",
"scenes/main"
]
},
{
"name": "level1",
"include": [
"prefabs/level1/obstacle",
"prefabs/level1/boss",
"scenes/level1"
]
},
{
"name": "level2",
"include": [
"prefabs/level2/obstacle",
"prefabs/level2/boss",
"scenes/level2"
]
}
]
}
5. 构建和发布
在 Cocos Creator 中,使用 Build 功能构建项目,并确保分包配置正确应用。构建完成后,你可以将资源发布到你的服务器或本地文件系统。
6. 动态加载和卸载
通过 GameController 中的 loadLevel1 和 unloadLevel1 方法,你可以在游戏运行时动态加载和卸载分包。
总结
这个分包管理器类提供了一个基本的框架,用于管理和加载游戏中的分包资源。你可以根据具体需求进行扩展和优化,例如添加错误处理、进度显示、缓存管理等功能。希望这个示例对你有帮助!如果有任何问题或需要进一步的功能扩展,请随时告诉我。
总体来说多磨合一下,就很OK了!
另外没有使用R1和V3测试,R1效果肯定是最好的!堪比gtp4o1








嘿~