Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
什么都不会的小弱鸡
minigame-unity-webgl-transform
提交
ab4c75ad
M
minigame-unity-webgl-transform
项目概览
什么都不会的小弱鸡
/
minigame-unity-webgl-transform
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
minigame-unity-webgl-transform
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
ab4c75ad
编写于
9月 10, 2021
作者:
L
liangyizhou(周良宜)
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update:更新文档
上级
7fce6599
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
42 addition
and
10 deletion
+42
-10
Demo/Ranking/Assets/Script/Ranking.cs
Demo/Ranking/Assets/Script/Ranking.cs
+2
-0
Demo/Ranking/Assets/WX-WASM-SDK/Editor/WXEditorWindow.cs
Demo/Ranking/Assets/WX-WASM-SDK/Editor/WXEditorWindow.cs
+1
-1
Design/CompressedTexture.md
Design/CompressedTexture.md
+33
-3
Design/DataCDN.md
Design/DataCDN.md
+1
-1
Design/HowToDebug.md
Design/HowToDebug.md
+1
-1
Design/PerfOptimization.md
Design/PerfOptimization.md
+2
-2
Design/Transform.md
Design/Transform.md
+1
-1
Design/UsingAddressable.md
Design/UsingAddressable.md
+1
-1
未找到文件。
Demo/Ranking/Assets/Script/Ranking.cs
浏览文件 @
ab4c75ad
...
...
@@ -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
);
});
...
...
Demo/Ranking/Assets/WX-WASM-SDK/Editor/WXEditorWindow.cs
浏览文件 @
ab4c75ad
...
...
@@ -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
{
...
...
Design/CompressedTexture.md
浏览文件 @
ab4c75ad
...
...
@@ -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,这样加载的时候纹理就会很小。速度快很多。
Design/DataCDN.md
浏览文件 @
ab4c75ad
...
...
@@ -16,7 +16,7 @@ Unity WebGL转换小游戏主要有两个游戏阶段需要下载资源:
下载方式:开发者通着需要自行使用CDN服务器进行托管。
## 资源服务器注意事项
1.
针对txt文件进行开启gzip压缩,首资源包有非常高的压缩率
1.
针对txt文件进行开启
Brotli或
gzip压缩,首资源包有非常高的压缩率
2.
CDN服务器开启跨域设置(否则iOS可能会出现跨域加载失败的情况)
3.
MP开发者后台为CDN域名添加到"安全域名"
4.
小游戏资源下载并发数为10,超过时底层自动排队
...
...
Design/HowToDebug.md
浏览文件 @
ab4c75ad
...
...
@@ -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地址”
...
...
Design/PerfOptimization.md
浏览文件 @
ab4c75ad
...
...
@@ -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
)
Design/Transform.md
浏览文件 @
ab4c75ad
...
...
@@ -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地址”
...
...
Design/UsingAddressable.md
浏览文件 @
ab4c75ad
...
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录