4399提审会删除某些格式文件

4399小游戏不支持某些格式,所以需要进行处理

cocos3.X打包时,animation文件会被打包为.cconb格式,此格式不在4399支持的格式中,会被删除
,bin格式的文件也不在支持的格式中……
后来搜索到了本站大佬:极客柒 的文章

https://blog.csdn.net/qq_39162566/article/details/124189655

但是文章中的代码不能直接使用,故而对其步骤进行了一定的简化和修改

一:对包体中所有不被支持的文件修改

新建python文件:changeResourceNameFor4399.py

from distutils.log import error
import os

#更换4399不支持的文件格式
# 转换cconb格式 to bin
def ConvertConb2bin(dir):
    for root, dirs, files in os.walk(dir):
        path = root.replace('\\', '/')
        for f in files:
            url = '%s/%s' % (path, f)
            info = os.path.splitext(f)
            name = info[0]
            ext = info[1]
            if ext == ".cconb":
                os.rename(f"{root}/{f}", f"{root}/{name}.cconb.ani")
                print(f"{root}/{name}.cconb.ani")
            if ext == ".bin":
                os.rename(f"{root}/{f}", f"{root}/{name}.bin.dbbin")
                print(f"{root}/{name}.bin.dbbin")

# 入口
if __name__ == "__main__":

    web_mobileUrl = "./web-mobile"

    if not os.path.exists(web_mobileUrl):
        error("请将cocos打包后的 web-mobile文件夹 放入同级目录下")
    else:
        ConvertConb2bin(f"{web_mobileUrl}/remote")
二:在加载文件时新建处理这些文件的资源管道

我是直接在加载文件的方法里面添加处理

public LoadAssets(lesson: LessonInfo): void {
        if (!lesson || !lesson.AssetURL) return;

        this._loadState = AssetLoadState.Ready;
        this._loadStateChanged?.(this._loadState, 0);
        let lastProgress = 0;
        let self = this;
        //新建一个额外处理cconb的资源管道
        assetManager.transformPipeline.append(function (task) {
            const input = task.output = task.input;
            for (let item of input) {
                if (!item.url) continue;
                //更改资源依赖
                item.url.endsWith(".cconb") && (item.url = path.changeExtname(item.url, ".cconb.ani"));
                item.url.endsWith(".bin") && (item.url = path.changeExtname(item.url, ".bin.dbbin"));
            }
        });
        //重写ani资源加载处理
        if window.h5api{
        // assetManager.downloader.register("ani", (url, options, onComplete) => {
        //     url.endsWith(".cconb.ani") ? assetManager.downloader.download(lesson.Id, url, ".cconb", options, onComplete)
        //         : assetManager.downloader.download(lesson.Id, url, ".ani", options, onComplete)
        // })
        // assetManager.downloader.register("bin", (url, options, onComplete) => {
        //     url.endsWith(".bin.dbbin") ? assetManager.downloader.download(lesson.Id, url, ".bin", options, onComplete)
        //         : assetManager.downloader.download(lesson.Id, url, ".dbbin", options, onComplete)
        // })
        }
	...后面为原有的代码
	}

被注释的代码本来是为了处理原有的被转换过来的格式的加载,可是极客柒大佬的代码中这段的api已经没有了,我改写后发现写得不对,但是催得急,而且只要项目中原本没有这些格式的文件,也不会影响运行,我就暂时没有去管它了…

三:把py文件丢到build里面,运行它

在这里插入图片描述

四:把web-mobile中的文件压缩成.zip

压缩前最好搜索一下看有没有转换成功
然后在4399后台把压缩包传上去就行了

作为小游戏,很多4399支持的很多格式的文件其实都没有用到,所以不被支持的格式,转就完事儿了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值