AB包比对文件内容:
ab包名 包大小 包内容md5字符串
编辑器功能-设置默认资源:
可以选择资源作为默认资源保存到StreamingAssets文件夹并且为他们生成资源对比文件
1. 在Unity菜单中添加一个功能按钮触发该功能(MenuItem特性)
2. 获取在Project窗口选择的资源信息(Selection类)
3. 将选择到的资源复制到StreamingAssets文件夹中(AssetDatabase类)
4. 为StreamingAssets文件夹中的AB资源生成资源对比文件(文件写入)
是否需要进行streamingAssetsPath中资源转存到persistentDataPath 取决于你项目中的AB包管理器中的加载机制
1.若都从persistentDataPath中价值,则需要转存(若默认资源很多,会浪费玩家的硬盘存储空间)
2.若persistentDataPath中没有资源,则从streamingAssetsPath中加载,则无需转存(不会浪费玩家空间)
游戏客户端
| 资源服务器
进入游戏后 -------------------------- AB包对比文件
需要下载远端对比文件
|
和本地对比文件对比
|---------------------------------|------------------------------------|
第一次且有默认资源 第一次没有默认资源 非第一次
streamingAssetsPath persistentDataPath
| | |
读取本地 下载所有远端对比文件 读取本地
streamingAssetsPath 中AB包 persistentDataPath
中对比文件对比 中对比文件对比
下载指定AB包 下载指定AB包
| | |
---------------------------------------------------------------------------------------------AB包资源
| | |
将远端ab包对比文件更新到本地存储在persistentDataPath中
获取远端对比文件信息 两种做法:
- 保存到临时文件中,待AB包下载完成后,在用该临时文件覆盖本地对比文件
- 压根不保存文件,直接通过下载流读取字节数组数据转为字符串待ab包下载完后再保存本地资源对比文件
编辑器窗口
ABTools.cs 编辑器窗口代码:
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using UnityEditor;
using UnityEngine;
public class ABTools : EditorWindow
{
private int nowSelIndex = 0;
private string[] targetStrings = new string[] {
"PC", "IOS", "Android" };
//资源服务器默认IP地址
private string serverIP = "ftp://192.168.31.178";
[MenuItem("AB包工具/打开工具窗口")]
private static void OpenWindow()
{
//获取一个ABTools 编辑器窗口对象
ABTools windown = EditorWindow.GetWindowWithRect(typeof(ABTools), new Rect(0, 0, 350, 220)) as ABTools;
windown.Show();
}
private void OnGUI()
{
GUI.Label(new Rect(10, 10, 150, 15), "平台选择");
//页签显示 是从数组中取出字符串内容来显示 所以 需要改变当前选中的索引
nowSelIndex = GUI.Toolbar(new Rect(10, 30, 250, 20), nowSelIndex, targetStrings);
//资源服务器IP地址设置
GUI.Label(new Rect(10, 60, 150, 15), "资源服务器地址");
serverIP = GUI.TextField(new Rect(10, 80, 150, 20), serverIP);
//创建对比文件 按钮
if(GUI.Button(new Rect(10, 110, 100, 40), "创建对比文件"))
CreateABCompareFile();
//保存默认资源到StreamingAssets 按钮
if (GUI.Button(new Rect(115, 110, 225, 40), "保存默认资源到StreamingAssets"))
MoveABToStreamingAssets();
//上传AB包和对比文件 按钮
if (GUI.Button(new Rect(10, 160, 330, 40), "上传AB包和对比文件"))
UploadAllABFile();
}
//生成AB包对比文件
private void CreateABCompareFile()
{
//获取文件夹信息
//要根据选择的平台读取对应平台文件夹下的内容 来进行对比文件的生成
DirectoryInfo directory = Directory.CreateDirectory(Application