提交 ab4c75ad 编写于 作者: L liangyizhou(周良宜)

update:更新文档

上级 7fce6599
......@@ -21,9 +21,11 @@ public class Ranking : MonoBehaviour
void Init()
{
ShowButton.onClick.AddListener(()=> {
RankingBox.SetActive(true);
// 如果父元素占满整个窗口的话,pivot 设置为(0,0),rotation设置为180,则左上角就是离屏幕的距离
// 注意这里传x,y,width,height是为了点击区域能正确点击,x,y 是距离屏幕左上角的距离,宽度传 (int)RankBody.rectTransform.rect.width是在canvas的UI Scale Mode为 Constant Pixel Size的情况下设置的。如果是Scale With Screen Size则要这要做一下换算,比如canavs宽度为750,rawImage设置为690 则应该传Screen.width*(690/750)。高度的同理。
var p = RankBody.transform.position;
WX.ShowOpenData(RankBody.texture, (int)p.x, Screen.height-(int)p.y, (int)RankBody.rectTransform.rect.width, (int)RankBody.rectTransform.rect.height);
});
......
......@@ -290,7 +290,7 @@ namespace WeChatWASM
{
if (useFriendRelation)
{
PlayerSettings.WebGL.emscriptenArgs = "-s EXTRA_EXPORTED_RUNTIME_METHODS=['GL','ccall'] -s FORCE_FILESYSTEM=1 -s DISABLE_EXCEPTION_CATCHING=0 -03";
PlayerSettings.WebGL.emscriptenArgs = "-s EXTRA_EXPORTED_RUNTIME_METHODS=['GL','ccall'] -s FORCE_FILESYSTEM=1 -03";
}
else
{
......
......@@ -10,16 +10,46 @@
## 使用Addressable或者AssetBundle的情况
1、首先点击"微信小游戏"->"转换小游戏" 打开转换小游戏弹窗,填入相关的导出配置信息,
2、点击"微信小游戏"->"压缩纹理"->"替换纹理",用到的纹理图片就会自动替换成占位符,展示位黑色的图片,如果项目用到的图片比较多这一步可能需要花费较长时间,比如10多分钟。
2、点击"微信小游戏"->"包体瘦身--压缩纹理"->"替换纹理",用到的纹理图片就会自动替换成占位符,展示位黑色的图片,如果项目用到的图片比较多这一步可能需要花费较长时间,比如10多分钟。
3、替换完毕后,再导出你的ab包。
4、在转换小游戏弹窗中点击导出。这里就不需要再勾选压缩纹理替换,否则会重复替换增加导出时间。
<image src="../image/edwindow.png" width="600"/>
5、导出后可以使用"微信小游戏"->"压缩纹理"->"恢复纹理"来恢复被替换的纹理图片。
5、导出后可以使用"微信小游戏"->"包体瘦身--压缩纹理"->"恢复纹理"来恢复被替换的纹理图片。
这里替换纹理后在导出目录会生成一个Assets目录,需要将该目录放到CDN的对应目录, 其对应的是你填写的"Assets目录对应CDN地址" ,比如你填写的地址为 https://wx.qq.com/data/Assets/
,那么小游戏需要展示图片的时候就会自动去该目录下载对应图片。
## 不使用Addressable和AssetBundle的情况
方法一:在转换小游戏弹窗中勾选上压缩纹理替换,然后导出。这种导出每次都会做一次纹理替换,可能花费较长时间。
方法二:同使用了Addressable的情况,可以先点击"微信小游戏"->"压缩纹理"->"替换纹理",替换纹理图片,再在转换小游戏弹窗中点击导出。这里就不需要再勾选压缩纹理替换,否则会重复替换增加导出时间。
方法二:同使用了Addressable的情况,可以先点击"微信小游戏"->包体瘦身--"压缩纹理"->"替换纹理",替换纹理图片,再在转换小游戏弹窗中点击导出。这里就不需要再勾选压缩纹理替换,否则会重复替换增加导出时间。
`注意:`"选择图片资源目录"对应的默认为Assets目录,选择更小范围的目录能加快图片替换时间。对于一些不在该目录内的图片,图片format`不能`选择为DTX1和DXT5。
## QA:
### 一、为什么点替换纹理之后没有在导出的Assets目录找到生成的文件?
* 1、如果是window用户请确认是否安装了ImageMagick并且重启了电脑,如果是Mac用户请确认是否已经点击了MacOS脚本授权并且控制台没有报错。
### 二、为什么导出后PC上IDE画面图片是黑的?
* 1、如果请求的是非正式域名,或者不是管理端配置的域名,请确认是否右侧"详情->本地设置",勾选上了不校验合法域名。
* 2、在IDE上点清除缓存->全部缓存,确认是不是缓存问题。
* 3、查看控制台切换到Network的tab查看网络是否有请求图片的网络错误,如果有请确认你填写的"Assets目录对应CDN地址"是否正确。并且资源是否已经放到了CDN的正确位置。
* 4、查看导出目录webgl/Assets目录下面的png图片是否是正常的,如果黑色的说明是重复替换了,请恢复工程里的纹理再替换一遍。
* 5、确认AB或AA包是否在替换纹理之后,是清除了缓存后再打的包,如果不是就要重新打一遍。
### 三、出现了PC IDE里面是正常的,但是手机上纹理却是黑色的情况。
* 1、确认AB或AA包是否在替换纹理之后,是清除了缓存后再打的包,如果不是就要重新打一遍。
* 2、如果只是调试,没有在管理端配置正式域名,确认是否已经点击了小游戏右上角,打开了调试。
* 3、确认是否设置了"替换纹理目录",如果设置了,那么不在这个目录里的图片请注意不要设置为DTX格式,否则会出现黑色。
### 四、MAC替换失败报Too Many Files错误。
* 1、这个问题一般是工程太大导致。请安装[NodeJS](https://nodejs.org/en/), 并打开"微信小游戏"->"包体瘦身--压缩纹理"->"更多设置",勾选上"单独用NodeJS生成纹理",执行替换后,进入WX-WASM-SDK/Editor/Node 目录用命令行,执行 ’node compressor.js‘ 来命令生成纹理。
### 五、有部分纹理展示异常
* 1、可能是flare纹理或者一些组件展示的时候需要获取图片宽高导致,可以将这些图片自动到一个目录,打开"微信小游戏"->"包体瘦身--压缩纹理"->"设置Flare纹理目录",将改目录配置上,再重新替换纹理试试。
* 2、如果使用了TextMeshPro,可以参考[这里](https://zhuanlan.zhihu.com/p/401559453), 将其纹理提取出来,再使用纹理替换。
### 六、图片太多,转换太慢
* 1、"微信小游戏"->"包体瘦身--压缩纹理"->"设置替换纹理目录"可以限制替换纹理的目录。
* 2、可以打开"微信小游戏"->"包体瘦身--压缩纹理"->"更多设置",勾选上只生成ASTC纹理。再替换纹理。这样只会生成一种纹理格式,可以用于开发时快速验证效果,正式上线时还应该去掉勾选,生成全部格式的纹理。
### 七、生成的纹理太大
* 1、PC端上预览的时候展示的是PNG图片会比较大,手机上用的是带txt后缀的,如astc.txt, 这些文件压缩率很高,注意正式环境CDN一定要开启Brotli或者Gzip,这样加载的时候纹理就会很小。速度快很多。
......@@ -16,7 +16,7 @@ Unity WebGL转换小游戏主要有两个游戏阶段需要下载资源:
下载方式:开发者通着需要自行使用CDN服务器进行托管。
## 资源服务器注意事项
1. 针对txt文件进行开启gzip压缩,首资源包有非常高的压缩率
1. 针对txt文件进行开启Brotli或gzip压缩,首资源包有非常高的压缩率
2. CDN服务器开启跨域设置(否则iOS可能会出现跨域加载失败的情况)
3. MP开发者后台为CDN域名添加到"安全域名"
4. 小游戏资源下载并发数为10,超过时底层自动排队
......
......@@ -59,7 +59,7 @@ python3 -m pip install brotli
生成目录下 webgl目录为游戏对应的webgl版本,minigame目录为转化后的小游戏代码。
注意:
* 将生成目录下的`webgl/ProjectName.data.unityweb.bin.txt`上传至“游戏资源CDN”。您的CDN最好支持gzip压缩txt文件,这样能减少网络传输数据和时间。
* 将生成目录下的`webgl/ProjectName.data.unityweb.bin.txt`上传至“游戏资源CDN”。您的CDN最好支持Brotli或gzip压缩txt文件,这样能减少网络传输数据和时间。
* 项目使用了小游戏Unity适配插件,若小游戏是第一次使用本插件,在开发者工具会报错提示插件未授权,具体可参考[使用Loader进行游游戏加载](UsingLoader.md)
* 使用AssetsBundle时,请将资源上传到“AB包CDN地址”
......
......@@ -16,7 +16,7 @@ Unity WebGL导出形式相对于原生APP应用,需要开发者更关注性能
## 三、最佳实践
### 3.1 加快游戏启动速度
* 编译选项中仅勾选首场景
* CDN必须开启gzip压缩
* CDN必须开启Brotli或gzip压缩
* 精简首场景物件,尽快渲染让玩家看到游戏首画面
* 减少初始化与首帧逻辑,首场景Awake/Start/首次Update不要包含过重逻辑
* 减少代码包体, 剔除不必要的插件
......@@ -67,4 +67,4 @@ Unity WebGL导出形式相对于原生APP应用,需要开发者更关注性能
更多信息请阅读:
* [使用Android CPU Profiler性能调优](AndroidProfile.md)
* [使用Unity Profiler性能调优](UnityProfiler.md)
\ No newline at end of file
* [使用Unity Profiler性能调优](UnityProfiler.md)
......@@ -33,7 +33,7 @@
注意:
* 若首包资源加载方式选择'小游戏分包',会根据生成的wasm代码包和首包资源大小是否超过20M,若超过还是会使用CDN加载,参考[使用Loader进行游游戏加载](UsingLoader.md)
* 若首包资源加载方式选择'CDN',将生成目录下的`webgl/ProjectName.data.unityweb.bin.txt`上传至“游戏资源CDN”。您的CDN最好支持gzip压缩txt文件,这样能减少网络传输数据和时间。
* 若首包资源加载方式选择'CDN',将生成目录下的`webgl/ProjectName.data.unityweb.bin.txt`上传至“游戏资源CDN”。您的CDN最好支持Brotli或gzip压缩txt文件,这样能减少网络传输数据和时间。
* 项目使用了小游戏Unity适配插件,若小游戏是第一次使用本插件,在开发者工具会报错提示插件未授权,具体可参考[使用Loader进行游游戏加载](UsingLoader.md)
* 使用AssetsBundle时,请将资源上传到“AB包CDN地址”
......
......@@ -48,7 +48,7 @@ Unity中资源按需加载也可以使用老的AssetBundle,然而使用AB需
部署首资源包需要注意:
> 1. 使用“小游戏分包”时,小游戏底层会自动进行压缩减少网络传输。
> 2. 使用“CDN”时,务必在服务器对txt后缀开启“gzip”。
> 2. 使用“CDN”时,务必在服务器对txt后缀开启“Brotli或gzip”。
### 3.2 资源按需加载
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册