CompressedTexture.md 2.8 KB
Newer Older
O
migrate  
oceanxiao 已提交
1 2 3 4
# 压缩纹理使用(Beta)

因为目前Unity导出的WEBGL游戏只支持DXT1和DXT5,在移动端上并不支持,而且除非使用Addressable这种将图片打包出来的手段,否则也会导致包体过大。为了解决这两个问题。我们提供了这个功能,让Unity游戏也能在移动端自动支持ASTC和ETC2的压缩纹理。而且图片也自动做了按需加载,无需再单独拆分打包。

5 6 7 8 9
简单总结使用我们的压缩纹理的好处:

    - 降低内存、减少解码消耗
    - 自动懒加载,降低包体

10
`注意:` 使用压缩纹理的图片或者图集,宽高需要为4的倍数,否则不会转化为移动端的压缩纹理。对于需要动态读取图片内容做处理的,目前还不支持将其转为压缩纹理。
11 12

## 原理简介
13
简单来说,我们使用占位符的方式将纹理图片设置为ETC1格式,然后在运行时再根据占位符去加对应纹理的压缩纹理格式。从而达到了减少内存和自动懒加载纹理的效果。
14 15

## 使用
16 17
### 1、安装NodeJS
下载并安装[NodeJs](https://nodejs.org/en/) 
18 19
### 2、Mac上授权
因为Mac上的隐私安全问题,使用mac的用户需要先授权,使用window的用户跳过这步。点击"微信小游戏"->"MacOS脚本授权",进行授权,直到不报错为止。若授权后还是报错,则需重启unity后再点授权。
O
migrate  
oceanxiao 已提交
20

21 22
### 3、打bundle文件
如果使用了bundle文件,要先打好AB或AB包。注意不要开启crc对bundle进行校验。
23

24 25
### 4、导出游戏
点击"微信小游戏"->"转换小游戏" 打开转换小游戏弹窗,点击左下角的"导出WEBGL并转化为小游戏"按钮等待导出游戏即可
26

27 28
### 5、处理bundle文件
点击"微信小游戏"->"包体瘦身--压缩纹理",点击处理bundle,如果自定义了bundle生成路径,要将bundle复制到导出目录的webgl目录下。如果项目用到的图片比较多这一步可能需要花费较长时间,比如10多分钟。执行完后请留意控制台的提示信息。
29

30

31 32 33
导出后的纹理所在目录:  

![avatar](../image/cm-texture1.png)
O
migrate  
oceanxiao 已提交
34

35 36
### 6、上传CDN
对应的资源应该选用webgl-min目录下的资源,比如webgl-min里的Assets目录,StreamingAssets目录,和xxx.webgl.data.unityweb.bin.txt 这些文件,应将其上传至CDN对应目录才能正确展示。
L
liangyizhou(周良宜) 已提交
37 38

## QA:
39 40 41


### 一、生成的纹理太大
42
* 1、PC端上预览的时候展示的是PNG图片会比较大,手机上用的是带txt后缀的,如astc.txt, 这些文件压缩率很高,注意正式环境CDN一定要开启Brotli或者Gzip,这样加载的时候纹理就会很小。速度快很多。建议优先使用Brotli
L
liangyizhou(周良宜) 已提交
43

L
liangyizhou(周良宜) 已提交
44

45
### 二、资源上传至CDN的注意事项
46 47
* 1、上传至CDN时,请注意要按二进制传输,强制storebinary,如果按文本传输也会出现加载回来的图片成黑色。

48