Unity WebGL构建报错:Unexpected token operator (>) 求解
Unity WebGL 中「unexpected token operator >」错误解决办法
出现这个错误的核心原因是:Unity WebGL 默认使用ES5版本的JavaScript环境,不支持ES6引入的箭头函数(=>)语法,浏览器解析时会把=>识别成非法运算符,从而报错。
解决办法很简单:把代码中所有箭头函数替换成传统的function函数写法即可,你自己改写的LoadStats方法是完全正确的,下面是完整的修正后代码:
mergeInto(LibraryManager.library, { SaveStats : function (data) { var dataString = UTF8ToString(data); var obj = JSON.parse(dataString); player.setData(obj); }, LoadStats : function(){ player.getData().then(function(_date){ const myJSON = JSON.stringify(_date); Game.SendMessage('Progress', 'Load', myJSON); }); }, SetToLeaderBoard: function (value) { ysdk.getLeaderboards() .then(function(lb) { lb.setLeaderboardScore('Points', value); }); }, ShowAd : function(){ ysdk.adv.showFullscreenAdv({ callbacks: { onClose: function(wasShown) { console.log("-----closed------") }, onError: function(error) { // some action on error } } }) }, ShowRewardedAd : function(){ ysdk.adv.showRewardedVideo({ callbacks: { onOpen: function() { console.log('Video ad open.'); }, onRewarded: function() { console.log('Rewarded!'); Game.SendMessage("Canvas","AddDollars"); }, onClose: function() { console.log('Video ad closed.'); }, onError: function(e) { console.log('Error while open video ad:', e); } } }) }, ShowAdRiviwe : function(){ ysdk.adv.showRewardedVideo({ callbacks: { onOpen: function() { console.log('Video ad open.'); }, onRewarded: function() { console.log('Rewarded!'); Game.SendMessage("Scripts","UnLose"); }, onClose: function() { console.log('Video ad closed.'); }, onError: function(e) { console.log('Error while open video ad:', e); } } }) }, GetLang: function () { var lang = ysdk.environment.i18n.lang; var bufferSize = lengthBytesUTF8(lang) + 1; var buffer = _malloc(bufferSize); stringToUTF8(lang, buffer, bufferSize); return buffer; }, });
关键替换规则:
- 无参数箭头函数
() => { ... }→ 替换为function() { ... } - 带单个参数的箭头函数
(param) => { ... }或param => { ... }→ 替换为function(param) { ... }
替换后代码完全兼容Unity WebGL的ES5环境,不会再出现语法解析错误。
内容的提问来源于stack exchange,提问作者Aliri Games
相关产品推荐
相关产品推荐

