vivominigame / issues

vivo小游戏问题反馈和统一回复入口
13 stars 9 forks source link

Unity构建Vivo小游戏常见问题汇总 #246

Open xinyangcuncun opened 1 year ago

xinyangcuncun commented 1 year ago

常见构建问题

image 需要检查下项目的导出设置,如下是正常设置 PlayerSettings.WebGL.linkerTarget = WebGLLinkerTarget.Wasm;

可以自查下使用Unity自带的WebGL打包工具是否能正确导出,如果失败需要项目自行适配解决

常见运行异常

1. 减少初始化与首帧逻辑,首场景Awake/Start/首次Update不要包含过重逻辑

2. 减少包体,剔除不必要的插件及代码,可在webgl打包时设置相应的压缩强度 Strip Engine Code 需要勾选,然后设置Stripping Level等级强度,建议选择最高

3. 尽量避免启动游戏时大量加载非首场景用到的游戏资源,可以使用按需加载方式如AssetBundle\Addressable,资源包尽量拆分,如可以设置Addressable的Bundle Mode为分包,同时可以降低内存的使用

4. 图片资源关闭MipMap功能,对于UI贴图来说,我们不必应用mipmap,因为一般的UI都是“平铺”在正交摄像机视口的,和摄像机木有距离这一概念,所以我们大可以把UI贴图的mipmap选项去掉,以节省内存

5. 及时卸载使用后的资源,如AssetBundle.Unload卸载AssetBundle

6. 合理设置纹理maxsize可以减小纹理资源大小,最大不要超过1024

7. 使用Unity Profiler运行Webgl分析内存、卡顿等问题

8. 游戏运行在浏览器比较流畅,但在手机上比较卡顿时,可以排查Application.targetFrameRate帧率是否设置偏小

9. 使用资源预下载能力,提升游戏流畅度

10. 文件操作尽量替换成小游戏平台的文件操作能力,C#SDK已经提供相应的API

第一步:先排查下调试器是否有错误日志 第二步:如果没有日志,可以通过操作小游戏调试器中的 清除平台数据 然后再次打开小游戏重试,也可同时通过关闭调试按钮进行重试 第三步:如果有错误日志,当出现类似 read file error, filePath = xxx 时,可自行到 http://minigame.vivo.com.cn/documents/#/api/data/file?id=qgreadfileobject-object 排查相应的错误码,如果当出现 code = 400 ,说明出现了OOM,需要项目方对wasm做优化,通常20~30M大小是合理的区间,优化方式可参考 《调试崩溃闪退》小节 第四步:如果错误日志是有类似 _wx__ 等,先排查下项目是否集成其他平台的导出插件 第五步:同时可以将导出webgl原生项目用浏览器打开,看是否正常运行,如果有同样类似的错误,需要项目方自行解决报错

  1. 如果是3D项目占用资源比较大,在低端机型运行比较卡顿可以像商务申请屏蔽相应的低版本Android系统

  2. 当出现审核不通过黑屏等现象时,先检查一下manifest.json中minPlatformVersion配置的最低引擎版本号,建议配置1104

当游戏在Debug模式下或者Release模式下弹出相应的错误弹窗或者有画面显示异常(大概率和粒子系统相关),请参考 《粒子渲染黑屏问题修复》#248 这个问题链接进行相应的验证,建议manifest.json中minPlatformVersion配置的最低引擎版本号配置1104

1072690884 commented 1 year ago

自定义loading 获取 online_mini.data.unityweb 报错 read file error, filePath = internal://files/f3070b97ee11eefe1d9eebd44ace629e/online_mini.data.unityweb msg = [object Object] code = 400

1072690884 commented 1 year ago

已解决 主要问题是文件超过94mb

JoseeRen commented 1 year ago

没办法使用Timer来计时吗?

xinyangcuncun commented 1 year ago

没办法使用Timer来计时吗?

这个是功能失效么 之前没遇到相应的反馈

JoseeRen commented 1 year ago

image 我是这样写的 adInit不会执行

JoseeRen commented 1 year ago

或者说我该怎样使用延时调用一个方法,麻烦给指导下吧,谢谢

xinyangcuncun commented 1 year ago

image 我是这样写的 adInit不会执行

这种方法先在Unity导出的webgl进行验证下,我验证结果是不支持的,可以尝试使用其他方案,或者参考我们平台的API http://minigame.vivo.com.cn/documents/#/api/timer/timer

hpp89 commented 1 year ago

hi, 游戏drawcall在90左右, 帧率只有15帧,很卡。同个游戏其他小游戏平台未见这种情况。有什么优化方法?

xinyangcuncun commented 1 year ago

hi, 游戏drawcall在90左右, 帧率只有15帧,很卡。同个游戏其他小游戏平台未见这种情况。有什么优化方法?

是否是游戏设置了帧数或者unity垂直同步设置的问题,如果都正常,另一个因素就是排查下运行内存是否正常,优化方法主要针对纹理及资源模型进行缩减

Sidney19950816 commented 1 year ago

Unity 游戏涉及到传感器水平仪的怎么实现vivo rpk的接入呢? 通过Unity InputSystem 添加Devices Accelerometer 打包到webgl 会识别到开启,但是RPK没有浏览器权限获取不到value image

xinyangcuncun commented 1 year ago

Unity 游戏涉及到传感器水平仪的怎么实现vivo rpk的接入呢? 通过Unity InputSystem 添加Devices Accelerometer 打包到webgl 会识别到开启,但是RPK没有浏览器权限获取不到value image

vivo小游戏平台提供了 相关的接口,需要开发者在jslib做相应的封装使用 http://minigame.vivo.com.cn/documents/#/api/device/accelerometer

Sidney19950816 commented 1 year ago

谢谢,今天放在Update里实时调用发现巨卡,帧率很低,跟jslib调用太频繁

xinyangcuncun commented 1 year ago

谢谢,今天放在Update里实时调用发现巨卡,帧率很低,跟jslib调用太频繁

放在start 里面调用一次即可 qg.subscribeAccelerometer

Sidney19950816 commented 1 year ago

谢谢,今天放在Update里实时调用发现巨卡,帧率很低,跟jslib调用太频繁

放在start 里面调用一次即可 qg.subscribeAccelerometer

啊?Unity只调用一次怎么实现获取Vector3啊,旋转的时候的值怎么更新啊

xinyangcuncun commented 1 year ago

谢谢,今天放在Update里实时调用发现巨卡,帧率很低,跟jslib调用太频繁

放在start 里面调用一次即可 qg.subscribeAccelerometer

啊?Unity只调用一次怎么实现获取Vector3啊,旋转的时候的值怎么更新啊

image

这个接口会自动回调数据 5次每秒

Sidney19950816 commented 1 year ago

原生广告基本上很容易调不出来,40218代码 异常,如果 原生 banner同时展示,只显示banner,原生很少显示出来,请问这种情况下怎么处理?

ashmoc commented 1 year ago

游戏上线之后,会在加载的时候有概率崩溃掉,没有报错,清除缓存就又可以进去了。这个问题在调试的时候复现不出来。请问有遇到过这种情况吗?

xinyangcuncun commented 1 year ago

游戏上线之后,会在加载的时候有概率崩溃掉,没有报错,清除缓存就又可以进去了。这个问题在调试的时候复现不出来。请问有遇到过这种情况吗?

是低端手机么 目前看可能是由于内存过大导致的

ashmoc commented 1 year ago

游戏上线之后,会在加载的时候有概率崩溃掉,没有报错,清除缓存就又可以进去了。这个问题在调试的时候复现不出来。请问有遇到过这种情况吗?

是低端手机么 目前看可能是由于内存过大导致的

好像并不是,不是低端手机也会有概率遇到。是在加载进度条的时候,弹 Made with unity 之前崩溃掉。

xinyangcuncun commented 1 year ago

游戏上线之后,会在加载的时候有概率崩溃掉,没有报错,清除缓存就又可以进去了。这个问题在调试的时候复现不出来。请问有遇到过这种情况吗?

是低端手机么 目前看可能是由于内存过大导致的

好像并不是,不是低端手机也会有概率遇到。是在加载进度条的时候,弹 Made with unity 之前崩溃掉。

咱们游戏两个wasm 文件分别是多大的

ashmoc commented 1 year ago

游戏上线之后,会在加载的时候有概率崩溃掉,没有报错,清除缓存就又可以进去了。这个问题在调试的时候复现不出来。请问有遇到过这种情况吗?

是低端手机么 目前看可能是由于内存过大导致的

image 这个样子,点击重启游戏就又可以进去了(不用清理缓存也可以)。

ashmoc commented 1 year ago

游戏上线之后,会在加载的时候有概率崩溃掉,没有报错,清除缓存就又可以进去了。这个问题在调试的时候复现不出来。请问有遇到过这种情况吗?

是低端手机么 目前看可能是由于内存过大导致的

好像并不是,不是低端手机也会有概率遇到。是在加载进度条的时候,弹 Made with unity 之前崩溃掉。

咱们游戏两个wasm 文件分别是多大的

image 一个19M,一个500K

xinyangcuncun commented 1 year ago

游戏上线之后,会在加载的时候有概率崩溃掉,没有报错,清除缓存就又可以进去了。这个问题在调试的时候复现不出来。请问有遇到过这种情况吗?

是低端手机么 目前看可能是由于内存过大导致的

image 这个样子,点击重启游戏就又可以进去了(不用清理缓存也可以)。

这个是游戏报异常的弹窗 本地复现调试看下日志

ashmoc commented 1 year ago

游戏上线之后,会在加载的时候有概率崩溃掉,没有报错,清除缓存就又可以进去了。这个问题在调试的时候复现不出来。请问有遇到过这种情况吗?

是低端手机么 目前看可能是由于内存过大导致的

image 这个样子,点击重启游戏就又可以进去了(不用清理缓存也可以)。

这个是游戏报异常的弹窗 本地复现调试看下日志

是使用Android Studio看日志吗

JoseeRen commented 1 year ago

调用激励视频时 image success回调成功了,并且日志显示激励成功已经打印但就是不出现激励视频,这是什么原因呢?不是必现,也没有稳定复现的方式 创建视频的代码 ` Reward = QG.CreateRewardedVideoAd(new QGCommonAdParam() { posId = _vivoParams.video }); Reward.onCloseRewardedVideoAction += OnRewardClose; Reward.onErrorAction += OnRewardError; Reward.onLoadAction += OnRewardLoad; Reward.Load((qgBaseResponse) => { Log("video load success"); }, (response => { if (Reward != null) { Reward.onErrorAction -= OnRewardError; Reward.onLoadAction -= OnRewardLoad; }

            Reward = null;

            Log("video load failed");
        }));`
Sidney19950816 commented 1 year ago

X21 1103 经常审核会驳回游戏运行时走动碰撞会卡死 自测采用同型号,云测采用低端机型皆不能复现问题,审核驳回的Log里查询error exception Unity 关键词都没有找到。 这个问题在审核时出现频率较高,请问如何才能避免或者准确定位问题?

UptonJun commented 1 year ago

请问下,运行打包指令报mg-service 不是内部命名是什么原因,已经安装npm install -g @vivo-minigame/cli,版本是1.5.0 1701328302346

ashmoc commented 1 year ago

请问下,运行打包指令报mg-service 不是内部命名是什么原因,已经安装npm install -g @vivo-minigame/cli,版本是1.5.0 1701328302346

没有找到 mg-service 这个命令啊,一般vivo就是 先执行 npm install ,再执行 npm run release 或者 npm run build,最后构建成功出来的 rpk 包在 dist 文件里。 https://minigame.vivo.com.cn/documents/#/lesson/base/start?id=%e7%bc%96%e8%af%91%e9%a1%b9%e7%9b%ae

UptonJun commented 1 year ago

请问下,运行打包指令报mg-service 不是内部命名是什么原因,已经安装npm install -g @vivo-minigame/cli,版本是1.5.0 1701328302346

没有找到 mg-service 这个命令啊,一般vivo就是 先执行 npm install ,再执行 npm run release 或者 npm run build,最后构建成功出来的 rpk 包在 dist 文件里。 https://minigame.vivo.com.cn/documents/#/lesson/base/start?id=%e7%bc%96%e8%af%91%e9%a1%b9%e7%9b%ae

谢谢,确实是忘记npm install了

UptonJun commented 1 year ago

打包出来后,访问cdn的资源报错,确定cdn的地址是可以访问的,nativeCallBack error: ReferenceError: HandleProgress is not defined。这种报错,是项目转出来的函数问题,还是说有后台域名白名单这种。 1701340092678 (已解决,插件版本从v8降到v6后,没有报错了)

1072690884 commented 11 months ago

2021.3.5f1c1 转vivorpk报错 AbortConTroller is not defined ,直接浏览器内没问题只有rpk有这个问题 ![Uploading iwEdAqNwbmcDAQTRA9oF0QD_BrABGxVHYREUlQWE6tmM-moAB9J6TwmyCAAJomltCgAL0Wo1.png_720x720q90.jpg…]()

awdawww commented 10 months ago

你好,我的问题是,为啥unity插件导入后,没有InnerAudioContext 。我看官网上是有API的。

Sidney19950816 commented 9 months ago

Unity WebGL发布的多点触控存在问题,该怎么解决

xinyangcuncun commented 6 months ago

Unity WebGL发布的多点触控存在问题,该怎么解决

Unity webgl 上 目前使用的 系统哪个API

xinyangcuncun commented 6 months ago

你好,我的问题是,为啥unity插件导入后,没有InnerAudioContext 。我看官网上是有API的。

是有报错吗 ?

Sidney19950816 commented 6 months ago

Unity WebGL发布的多点触控存在问题,该怎么解决

Unity webgl 上 目前使用的 系统哪个API unity默认的,只查到微信小游戏的多指触控异常,需要在EventSystem上挂载脚本:WXTouchInputOverride.cs,vivo小游戏有类似的吗

tomasky commented 3 months ago

请问这种webgl.data.gz 是通过webgl.data.unityweb 文件使用gzip压缩过, 支持吗? 压缩后报 RangeError: Maximum call stack size

ericHe commented 3 months ago

UnityWebRequest发送post请求响应后的GetResponseHeaders为什么没有返回值呀,有人遇到过这个问题吗?编辑器测试都没问题,在vivo调试里面就是取不到值

cl0lc commented 1 month ago

微信图片_20241029112024 在手机上调试时,在首屏加载页,加到50%左右时报错

cl0lc commented 1 month ago

Alone @.***

是在转换后的代码里搜索吗,搜索到这两个地方。unity项目就是一个新建的3D项目 

------------------ 原始邮件 ------------------ 发件人: "vivominigame/issues" @.>; 发送时间: 2024年10月29日(星期二) 中午11:33 @.>; @.**@.>; 主题: Re: [vivominigame/issues] Unity构建Vivo小游戏常见问题汇总 (Issue #246)

在手机上调试时,在首屏加载页,加到50%左右时报错

看一下framework.js里面streamingAssetsUrl是不是出问题了,vivo导出工具会修改这个

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

ydswinter commented 1 month ago

Alone @. 是在转换后的代码里搜索吗,搜索到这两个地方。unity项目就是一个新建的3D项目  ------------------ 原始邮件 ------------------ 发件人: "vivominigame/issues" @.>; 发送时间: 2024年10月29日(星期二) 中午11:33 @.>; @*.**@*.>; 主题: Re: [vivominigame/issues] Unity构建Vivo小游戏常见问题汇总 (Issue #246) 在手机上调试时,在首屏加载页,加到50%左右时报错 看一下framework.js里面streamingAssetsUrl是不是出问题了,vivo导出工具会修改这个 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.&gt

你是不是使用了Addressable,并设置了自定义的资源url,vivo导出工具会把导出的framework.js里面的Module.streamingAssetsUrl改成Module.streamingAssetsUrl(),这样就会变成给一个方法赋值。处理办法就是不要在Addressable中自定义url,而是通过vivo导出工具配置,或者是注释调vivo导出工具的相关代码