Neovictorian Paisley Menswear

    laya3dfilemerge

    1.0.4 • Public • Published

    laya3dfilemerge

    介绍

    将laya从u3d中导出的描述文件(lh,ls,lmat)等,合并为一个json文件,并且在laya中,自己解析,使得加载小文件的数量降到最低,ls也许比较大,可以自行决定是否合并进json文件。

    更新列表

    安装教程

    1. npm i laya3dfilemerge -g

    使用说明

    1. 在想要生成二进制文件的目录中(描述文件的主目录:bin/res/d3/assets/xxx/...,我们可以选择在d3目录下),shift+右键,选择在此处打开PowerShell窗口
    2. 输入:laya3dm -e lh,lmat,ls [-o 输出的目录] [-p 需要的前缀],即可将本目录及子目录的描述文件都合并了(推荐使用此方式) 注意那个 -e,输出的目录可以不写,就是输出到原地,输出前缀也可以不写,这个前缀指的是生成的文件中,key的前缀,因为在本目录下,也许需要的是父级目录的前缀。
    // 示例
    laya3dm -e lh,lmat -i D:\work\xxx\bin\res\d3 -o D:\work\xxx\bin\res\d3 -p res/d3 -n d3file.json -d false
    
    -e 需要合并的文件扩展名列表 (必需参数)
    -i 输入目录,没有就默认是当前打开powershell的目录 (最好有)
    -o 输出目录,没有就默认是输入目录
    -p 写文件时,每个key前加的前缀,不需要就不用加这个参数 (看情况自己加)
    -n 最终输出文件名,默认是: d3file.json
    -d 是否删除需要合并的文件,不需要删除就不用加这个参数(慎用)
    -ot 需要读取和导出的文件类型,默认json,二进制为bin
    -s 文件大小限制,单位为KB,即:小于这个数值的文件才合并
    
    
    // 得到的结果 d3file.bin(其实是个json文件)
    {
        "res/d3/zidansmoke.lh":"{\"version\":\"xxx\",...}",
        ....
    }
    
    // 使用方法:
    // 注意,一定要先加载d3file.json文件才行。
    let res = [{ url: "res/d3/d3file.json", type: Laya.Loader.JSON }]
    Laya.loader.load(res, Laya.Handler.create(this, () => {
        let d3res = Laya.loader.getRes('res/d3/d3file.json')
        for (let key in d3res) {
            let url = Laya.URL.formatURL(key);
            if (!Laya.Loader.preLoadedMap[url]) {
                let str = d3res[key];
                let obj = JSON.parse(str);
                // 这里要将数据放入预加载的hash中,其他代码不需要修改
                Laya.Loader.preLoadedMap[url] = obj;
            }
        }
        // todo 这里再去加载其他的3d资源
    })
    
    
    
    1. 输入:laya3dm -e lani,lm [-ot 输出的格式] [-s 限制多小的文件合并(单位KB)],即可将本目录及子目录的二进制文件都合并了 注意那个 -e-ot的参数可以不写,默认为json格式,如果是二进制,传bin
    // 示例
    laya3dm -e lani -i D:\work\xxx\bin\res\d3 -ot bin -p res/d3 -n d3lani.bin -s 40
    laya3dm -e lm -i D:\logs\d3 -e lm -n d3lm.bin -ot bin -p res/d3 -s 20
    
    -e 需要合并的文件扩展名列表 (必需参数)
    -d 这个需要慎用
    
    // 加载完毕bin文件后,需要进行以下处理
    function pasred3bin(d3bin){
        let b = new Laya.Byte(d3bin)
        let len = b.readUint32()
        let str = b.readUTFBytes(len)
        let descJson = JSON.parse(str);
        let oldPos = b.pos;
    
        for (let key in descJson) {
            let url = Laya.URL.formatURL(key);
            if (!Laya.Loader.preLoadedMap[url]) {
                let obj = descJson[key];
                b.pos = obj.start + oldPos;
                let buf = b.readArrayBuffer(obj.end + oldPos)
                Laya.Loader.preLoadedMap[url] = buf;
                Laya.Loader.preLoadedMap[key] = buf;
            }
        }
    }
    
    

    Install

    npm i laya3dfilemerge

    DownloadsWeekly Downloads

    13

    Version

    1.0.4

    License

    ISC

    Unpacked Size

    25.2 kB

    Total Files

    10

    Last publish

    Collaborators

    • wmtiger