[Unity workflows] Unity Addressables 的优势:保存游戏的 3 种方法

11 篇文章 0 订阅
9 篇文章 0 订阅

英文原文:https://thegamedev.guru/unity-addressables/benefits-for-your-game/

  如果您一直在关注我,您可能知道我对可以在您的游戏中获得的 Unity Addressables Benefits 感兴趣。 这是有原因的。

  Unity Addressables 是一个功能强大的 Unity 软件包,它升级了您和我一直以来应对游戏开发中一些最重要挑战的方式:高效、轻松的内容管理。

  在管理您的游戏资产时,很难保持良好的标准来防止我们的项目变成一堆令人作呕的烂摊子。 一个大问题是我们资产管理系统的不同职责之间的耦合。

  我们在项目中存储资产的方式与我们加载它们以及稍后使用它们的方法有很大关系。

  例如,您可能决定将一个无辜的sprite存储在 Resources 文件夹中。 反过来,这将迫使 Unity 以将sprite放入特殊存档文件的方式构建播放器。 而且它被放在那里的事实将使您无法通过 Resources API 加载它。

  事情变得凌乱的速度比你想象的要快!

  一个选择,多重的长期后果。

  一个好的系统将防止你我轻易犯下这样草率的错误。 一个伟大的系统也将易于学习和使用。

  使用 Unity Addressables,我们将资产管理问题分开。 我们的目标是保持灵活性并保持我们的项目可维护。

  以下是 3 个经过验证的 Unity Addressables 为您和您的游戏带来的好处:

表中的内容

  1. Unity Addressables 的好处:减少游戏的内存压力
  2. Unity Addressables 优势:销售您的下一个 DLC - 快速而简单
  3. Unity Addressables 的好处:减少迭代次数
    A) 缩小构建尺寸
    B) 减少加载时间
  4. 额外

1. Unity Addressables 的好处:减少游戏的内存压力

  当您发布游戏时,大多数平台都需要您指定玩家必须满足的最低硬件规格才能购买和玩您的游戏。

  这里的数学很简单:您需要的硬件功能越多,购买您的游戏的玩家就越少。 或者,从另一个角度来看,您的内存管理做得越好,您可以在游戏中提供的内容和乐趣就越大。

  这是 Unity Addressables 的第一个好处:高效的内存管理。

  给你一个简短的想法,转换这种代码:

public class CharacterCustomization : MonoBehaviour
{
    [SerializeField] private List<Material> _armorVariations;
    [SerializeField] private MeshRenderer _armorRenderer;
    public void ChangeArmorVariation(int variationId)
    {
        _armorRenderer.material = _armorVariations[variationId];
    }
}

进入另一个:

using UnityEngine.AddressableAssets;
public class CharacterCustomizationV2 : MonoBehaviour
{
    [SerializeField] private List<AssetReference> _armorVariations;
    [SerializeField] private MeshRenderer _armorRenderer;
    public IEnumerator ChangeArmorVariation(int variationId)
    {
        var loadProcess = _armorVariations[variationId].LoadAssetAsync();
        yield return loadProcess;
        _armorRenderer.material = loadProcess.Result;
    }
}

会给你带来这些结果:
在这里插入图片描述
我会说容易获得。

阅读有关 Unity Addressables 的更多信息,以更好地管理内存
https://thegamedev.guru/unity-addressables/tutorial-learn-the-basics/

2. Unity Addressables 优势:销售您的下一个 DLC - 快速而简单

  Addressables 让您可以完全控制存储和加载游戏资产的方式、时间和地点,这对于实施和销售可下载内容非常有用。 这是我们的第二个 Unity Addressables 优势。

  即使您不打算很快发布 DLC,只要在您的项目中使用 Unity Addressables,您就已经完成了前面的大部分工作。

  您可以通过多种方式在 Unity 中实现 DLC,但对于初学者来说,这是一个很好的起点:

public class DlcManager : MonoBehaviour
{
    // ...
    public IEnumerator TryDownloadDlc()
    {
        if (_hasBoughtDlc && _dlcDownloaded == false)
        {
            var operationHandle = Addressables.DownloadDependenciesAsync("DLC-Content");
            while (operationHandle.IsDone == false)
            {
                _progressText.text = $"{operationHandle.PercentComplete * 100.0f} %";
                yield return null;
            }
        }
    }
}

你明白了。

为什么您会拒绝以极低的成本为您的玩家销售更多娱乐内容?

3. Unity Addressables 的好处:减少迭代次数

  使用 Unity Addressables 将减少在几个方面浪费的等待时间。

  告诉我,按下Unity播放按钮后半分钟就被卡住是多么令人沮丧的事情? 如果您将构建部署在另一个平台(例如移动平台或 WebGL)上,情况只会变得更糟。 这一切都开始为您的迭代时间增加分钟和分钟。 老得那么快。

  我也不喜欢等待。

  但是你知道我喜欢什么吗? Unity Addressables,我期待已久的英雄。 这就是 Addressables 将如何帮助您:

A) 缩小构建尺寸

  你的游戏有很多内容,我明白了。 游戏玩家喜欢享受内容。 开发人员喜欢创建内容。

  因此,您必须将您的内容交付给玩家。

  然而,这并不意味着您制作的每一项资产都必须包含在您的玩家将安装的版本中。 事实上,你应该尽可能多地删除。

  玩家希望尽快开始游戏。 当您的游戏窃取了他们 2GB 的数据计划和 30 分钟的游戏时间时,他们会很不高兴。 他们只会继续下载 Candy Crush 这类安装大小不到 50MB 的游戏。

  一种策略是仅将运行游戏所需的资产包括到主菜单中。 然后,您可以在后台逐步下载其余内容,当然是从下载游戏的第一关开始。

  意识到您在开发过程中的部署时间会更快也很不错。 您将能够每天迭代更多次; 从长远来看,这种好处会迅速增加。

在这里插入图片描述

B) 减少加载时间

  作为游戏开发者和玩家,我们都讨厌等待。 等待让我们离开了区域,在你意识到之前,该上床睡觉了。

  Unity 正在努力减少我们开始玩游戏所需的时间,无论是在 Unity 编辑器中还是在我们分发的游戏中。

  但还不够努力。

  事情在未来看起来很有希望,但并非没有副作用。 在 Unity 2019.3 中避免域重新加载看起来很有希望,但截至目前仍处于测试阶段,并不是每个人都能从中获益。

  与此同时,我们可以做得比沮丧更好。

  假设您正在开发一款中世纪游戏。 几个月前,您为游戏实现了盔甲类型。 你做得非常好,生成了超过 100MB 的内容 ( ͡° ͜ʖ ͡°)

  在某个时候,是时候继续前进了,而现在你正在做其他事情,比如说剑术。

  意识到,每次您按下播放按钮来处理您的功能时,您都在加载来自所有已开发功能的大量数据,并且加载这些数据需要花费大量时间。 你按下播放键来测试你的剑战动画,你花了 5 秒钟等待加载你实现的盔甲功能。

  加载中浪费的时间大部分花在了I/O(Input/Output)上,因为内存带宽很昂贵。 而且,最重要的是,您的 CPU 必须处理它。 作为开发人员,您在使用 Unity 编辑器进行开发时会付出时间代价。 但是您的玩家也会在您分发的游戏中支付费用。

  知道这有多大意义,让我们问问自己:我们可以走哪些捷径?

  事实证明,Unity Addressables 可以通过两种方式帮助我们。

1. Unity Addressables 将减少玩家的加载时间

  我们可以减轻一些玩家的痛苦。

  保持对我们资产的间接引用而不是直接引用将大大缩短您的加载时间。

  通过使用间接引用 (AssetReference),Unity 不会一次加载所有内容,而只会加载您告诉它的内容。 更重要的是,您可以直接控制何时发生。

2. Unity Addressables 将减少您的 Unity Editor 迭代次数

  Unity Addressables Window中的播放模式脚本你知道多少? 播放模式脚本定义了 Unity 编辑器应如何加载标记为可寻址的内容。

  选择 Packed Play Mode 后,Unity 将直接加载您预构建的可寻址资产,几乎没有处理开销,有效减少您的 Unity Editor 迭代时间

  只是不要忘记为此构建播放器内容
在这里插入图片描述

  如果您将这些策略应用于要求最苛刻的内容会怎样?

4. 额外

  是真的。 Unity Addressables 非常有帮助。 但是这个包只会帮助那些想要得到帮助的人。

  在阅读了 Addressables 如何帮助您更好地生产产品并向玩家销售更多产品后,您可能想立即开始使用它。 然而,从这个新的未知领域开始可能具有挑战性。

  为了充分利用您的机会,请先回答以下问题:

  • 你现在站在哪里? 您是刚刚起步,还是您的技能已准备就绪?
  • 什么时候用间接引用,什么时候用直接引用?
  • 更大的图是什么?
  • 你的下一个合乎逻辑的步骤是什么?
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值