在微信小游戏环境中使用protobuf(Laya)
发表于2018-01-09
我们游戏使用的是protobuf,但在微信小游戏环境里面发现,Laya.Browser.window.dcodeIO.ProtoBuf访问不了.
private static ProtoBuf: any = Laya.Browser.window.dcodeIO.ProtoBuf;
后面研究一下LAYA库里面的protobuf.js,发现
/* AMD */ if (typeof define === 'function' && define["amd"])
define(["bytebuffer"], factory);
/* CommonJS */ else if (typeof require === "function" && typeof module === "object" && module && module["exports"])
module["exports"] = factory(require("bytebuffer"), true);
/* Global */ else
(global["dcodeIO"] = global["dcodeIO"] || {})["ProtoBuf"] = factory(global["dcodeIO"]["ByteBuffer"]);
最后一句:
(global["dcodeIO"] = global["dcodeIO"] || {})["ProtoBuf"] = factory(global["dcodeIO"]["ByteBuffer"]);
没有执行到所以只需要把这句提上来就可以了,也就是声明一个顶级变量让全局访问到.
同样的方法也可以用在long.min.js里,如果你在微信小游戏里面需要用到ProtoBuf.Long = ByteBuffer.Long的话,也需要把他声明到全局.如下: