怎么实现在微信小游戏接入外部JS传参

怎么实现在微信小游戏接入外部JS传参

1)怎么实现在微信小游戏接入外部JS传参
2)如何卸载登录场景用的字体文件
3)小游戏后台研发工具箱里的性能数据部分为空
4)如何优化Graphics.DrawMeshInstancedIndirect持续调用的开销


这是第433篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。

UWA社区主页:community.uwa4d.com
UWA QQ群:793972859

Script

Q1:以前的对接用了一个外部的全局JS函数传参给Unity引擎,写法是定义一个外部JS函数拿启动参数,用Plugin里的JS代码调用SDK启动的JS。

请问这种传参在微信小游戏接入怎么实现?

A:可以放在某个.jslib中,参考:
https://docs.unity3d.com/cn/2020.3/Manual/webgl-interactingwithbrowserscripting.html

感谢左君博@UWA问答社区提供了回答

Q2:我前面在JS启动加一个这种函数传参数,现在却不知道放哪里,而且找不到全局函数。

function GetH5PhpArgs(){ 
      return _game_param; 
}

A:可以查看这个文档:
https://wechat-miniprogram.github.io/minigame-unity-webgl-transform/Design/CustomSDK.html

感谢袁梓民@UWA问答社区提供了回答

Q3:请问微信转换工具默认会加这些宏(WEIXINMINIGAME)吗?还是我要手工设置Unity的宏定义?我自己的jslib能不能调用微信的函数?

A:可以,你也可以参考微信SDK里的jslib。

感谢左君博@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/683402873d306f3e9d594ee6


Memory

Q:请问登录场景用的字体文件要用什么办法卸载呢?字体打在了启动场景没办法卸载, 会导致进入游戏加载AssetBundle后内存中总共有两份的情况。

A:一般会考虑将初始场景的字体进行裁剪,只保留用到的字符。

感谢Faust@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/68340465682c7e5cd61bfa85


Platform

Q:请问小游戏后台研发工具箱里的性能数据里面部分数据都是空的是什么原因?其他数据是有的,但CPU均值、内存异常退出率和网络性能都没有数据,是总样本数量不够多还是SDK有什么开关需要打开呢?

A:因为性能数据上报是抽样的,所以如果刚上线的游戏DAU很小,有些数据没有就是正常的。

感谢袁梓民@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/683400e73d306f3e9d594ee5


Rendering

Q:我们现在场景中有很多大批量的物件是通过Graphics.DrawMeshInstancedIndirect和Compute Shader来剔除进行绘制的。目前的做法是完全没有从GPU中返回数据给CPU,所以就算没有任何物件通过剔除,仍然会一直调用Graphics.DrawMeshInstancedIndirect,这样就会有很多数量空的调用。

要是根据GPU回传的数量来决定是否调用Graphics.DrawMeshInstancedIndirect的,又会导致CPU等待GPU回传数据。请问这个怎么做会比较好一点?

A:建议用GPU裁剪,因为这个提交DrawCall的操作是省不了的,不过这个开销相对较小;另外就是如果Compute Shader只有视椎体剔除,那么可以试试用CPU粗粒度剔除,放Job或C# 并行里都行,这样也方便衔接CPU绘制接口。

感谢Faust@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/6834039a3d306f3e9d594ee7

封面图来源于网络


今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。

UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859