[游戏开发][Unity]Assetbundle下载篇(7)获取运行时(边玩边下)下载列表

文章讨论了手游中采用边玩边下功能的原因,主要是为了减小初始包体大小,提高用户下载意愿。首包资源应保证玩家能玩一段时间,而额外资源通过热更新或游戏内下载。代码示例展示了如何区分启动热更和边玩边下的资源清单,以及如何构建下载列表。
摘要由CSDN通过智能技术生成

目录

打包与资源加载框架目录

正文

啥是运行时下载清单?现在大多数手游都会有一个边玩边下功能,会提示用户是否开启下载,要XXX流量,如果你下载完了,可能还会有奖励。

 

疑问:为何要有边玩边下功能?

解答:为了发包的包体小,并且是越小越好!

我们的游戏想要赚钱,第一步就是让用户下载你的游戏,其次才是考虑留存的问题。

如果你的首包就是10个G,用户直接就开骂了,想让老子下载10G的包,你得多大面子。

首包到底该多大,多少需要热更,多少需要游戏内下载是个玄学问题,没有标准答案。

我认为首包的资源起码应该保证新玩家能玩个一两天不需要下载的量。

也有的公司够粗暴,首包只有框架,资源和业务代码全部热更。

除了提示用户下载,不知道有没有公司会不提示偷偷下载,或者检测如果是WIFI状态下,偷偷下载,如果不提示就让用户浪费了流量,可能涉嫌违法。


AB包如何区分是启动时热更还是边玩变下?

我把第一篇文章的内容以及AB包清单粘贴过来,

第一行是SVN版本号

第二行是AB包数量

从第三行开始是资源包信息,以=号分割开有效数据,分别是

MD5.unity3d = 资源路径 = 资源路径的HashId = 包体KB大小 = SVN版本号 = 启动热更模式

上面说的热更启动模式就是专门用来做这个的标记,我们项目中buildin代表启动时热更,InGame代表边玩边下。

 下面是收集边玩边下列表的代码,代码比较简单,就是判断下载列表的每一行,如果Tag标记是InGame,那么就加入边玩边下列表。

private void GetDownloadList(PatchManifest target)
{
    string style = PatchHelper.GetPackStyle();
    MotionLog.Log(ELogLevel.Log, $"getDownloadList style is {style}");
    if (style == PATCH_STYLE.INGAME && _patcher.DownloadInGame)
    {
    _patcher.InGameDownloadList.Clear();

        // 临时下载列表
		List<PatchElement> downloadList = new List<PatchElement>(1000);

		// 准备下载列表
		foreach (var pair in target.Elements)
		{
			PatchElement element = pair.Value;
			if (element.Tag == PATCH_STYLE.INGAME)
			{
				downloadList.Add(element);
				// yield return 0;
				}
			}

		// 如果下载列表为空
		MotionLog.Log(ELogLevel.Log, $"FsmGetInGameDownloadList count is {downloadList.Count}");
		if (downloadList.Count > 0)
		{
			// 最后添加到正式下载列表里
			_patcher.InGameDownloadList.AddRange(downloadList);
			downloadList.Clear();

			// 发现新更新文件后,挂起流程系统
			_patcher.inGameCnt = _patcher.InGameDownloadList.Count;
			_patcher.inGameSizeKB = 0;
			foreach (var element in _patcher.InGameDownloadList)
			{
				_patcher.inGameSizeKB += element.SizeKB;
				// yield return 0;
			}

			// PatchEventDispatcher.SendFoundUpdateFilesMsg(totalDownloadCount, totalDownloadSizeKB);
		}
	}

	_patcher.SwitchNext();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Little丶Seven

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值