unity导入jslib问题

unity打包webgl出现报错Failed running python.exe
其实这是压缩jslib出现了问题

导入jslib里面结构是这样的

在这里插入图片描述
里面含有个serverurl声明,最后打包的时候报错了, 这个jslib解析不了,
去掉这个声明或者将其改成函数形式就可以了
最后的格式如下

//声明对象
var obj={

    //声明服务器地址(Ab包和Json的存放位置)
    getServerUrl : function(){
        return "http://192.168.0.33:8080/3dFiles/";
    } ,

    //声明相关Url解析工具
     getUrlParmUtils : function () { // url参数
        var data, index;
        (function init() {
            data = [];
            index = {};
            var u = window.location.search.substr(1);
            if (u != '') {
                var parms = decodeURIComponent(u).split('&');
                for (var i = 0, len = parms.length; i < len; i++) {
                    if (parms[i] != '') {
                        var p = parms[i].split("=");
                        if (p.length == 1 || (p.length == 2 && p[1] == '')) {
                            data.push(['']);
                            index[p[0]] = data.length - 1;
                        } else if (typeof (p[0]) == 'undefined' || p[0] == '') {
                            data[0] = [p[1]];
                        } else if (typeof (index[p[0]]) == 'undefined') { // c=aaa
                            data.push([p[1]]);
                            index[p[0]] = data.length - 1;
                        } else {// c=aaa
                            data[index[p[0]]].push(p[1]);
                        }
                    }
                }
            }
        });
        return {
            // 获得参数,类似request.getParameter()
            parm: function (o) { // o: 参数名或者参数次序
                try {
                    return (typeof (o) == 'number' ? data[o][0] : data[index[o]][0]);
                } catch (e) {
                }
            },
            //获得参数组, 类似request.getParameterValues()
            parmValues: function (o) { //  o: 参数名或者参数次序
                try {
                    return (typeof (o) == 'number' ? data[o] : data[index[o]]);
                } catch (e) { }
            },
            //是否含有parmName参数
            hasParm: function (parmName) {
                return typeof (parmName) == 'string' ? typeof (index[parmName]) != 'undefined' : false;
            },
            // 获得参数Map ,类似request.getParameterMap()
            parmMap: function () {
                var map = {};
                try {
                    for (var p in index) { map[p] = data[index[p]]; }
                } catch (e) { }
                return map;
            }
        }
    },

    //获取需要加载的Ab包地址(
    getAbUrlFromJSCode : function(){
        var UrlParm=this.getUrlParmUtils();
        var url=this.getServerUrl()+(UrlParm.parm('spuid')==undefined?"1.ab":(UrlParm.parm('spuid')+".ab"));
        return url;
    },
    //获取需要加载的Json说明地址
    getJsonUrlFromJSCode : function(){
        var UrlParm=this.getUrlParmUtils();
        var url=this.getServerUrl()+(UrlParm.parm('spuid')==undefined?"1.json":(UrlParm.parm('spuid')+".json"));
        return url;
    } 
}
//合并对象到LibraryManager.library中
mergeInto(LibraryManager.library, obj);

这样就可以打包了

还需要注意的一个地方是
如果jslib里面需要返回一个string给c#的话 需要这样去写

var returnStr = "bla";
        
        var bufferSize = lengthBytesUTF8(returnStr) + 1;
        var buffer = _malloc(bufferSize);
        stringToUTF8(returnStr, buffer, bufferSize);

        return buffer;

下面是一位先驱者的博客 真心感谢她
https://www.cnblogs.com/kingBook/p/8464202.html

猜你喜欢

转载自blog.csdn.net/weixin_43149049/article/details/86607594