实验用品编辑器说明文档

实验用品编辑器说明文档


物件播放器-UPM资源管理方案

<table> <thead> <tr> <th>作者</th> <th>林七佛</th> </tr> </thead> <tbody> <tr> <td>最后修改时间</td> <td>2023-11-10</td> </tr> <tr> <td>版本</td> <td>V1.0.0</td> </tr> </tbody> </table> <h1><strong>背景</strong></h1> <p>物件播放组件将使用UPM包的形式发布,其中资源的管理方式(如何存取?)需要考虑和设计。</p> <p>比如,<strong>器材的左键菜单</strong>。原先是Player组件负责管理的,其中资源的存放位置,如下图所示:</p> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=d30c2d58f17596588c6da089e7ff0348&amp;amp;file=file.png" alt="" /> 如上图所示:EquipInteraction1Wnd作为[器材的左键菜单]资源,以ab包的格式存放于Unity工程的StreamingAssets目录下,此资源将跟随<strong>应用</strong>一起发布。</p> <p>我们知道,UPM并<strong>不支持</strong>StreamingAssets的 方式存放资源,而且UPM包中的AB包资源构建时不会复制到项目中。因此,在上面提到使用UPM时,我们需要考虑其他的资源管理方式。</p> <h1><strong>方案概述</strong></h1> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=491616d7bee0fcf8379f04c004a783a3&amp;amp;file=file.png" alt="" /></p> <h1><strong>可选方案</strong></h1> <h2><strong>Resources</strong></h2> <p>Resources方式放置和加载资源是UPM包中较为广泛使用的一种方式,包括官方插件、第三方插件和项目中使用的自定义插件,如下图所示:</p> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=91351a1499031f890246513282268a0e&amp;amp;file=file.png" alt="" /></p> <h3><strong>优点</strong></h3> <p><strong>1. 简单易用:</strong>Resources文件夹提供了一种简单的方式来管理和加载资源,无需额外的代码或配置。</p> <p><strong>2. 快速迭代:</strong>由于资源直接存放在项目中,可以快速进行修改和替换,方便进行迭代开发。</p> <p><strong>3. 跨平台兼容:</strong>Resources文件夹可以在不同平台上使用,无需额外的适配工作。</p> <h3><strong>缺点</strong></h3> <p><strong>1. 内存占用问题:</strong>使用Resources文件夹加载的资源会一直存在于内存中,无法手动释放,可能导致内存占用过高。</p> <p><strong>2. 不适合动态加载:</strong>Resources文件夹中的资源只能通过文件名来加载,无法根据运行时的条件进行动态加载,限制了一些灵活性。</p> <p><strong>3. 不支持热更</strong></p> <p><strong>4. 跨平台兼容需分平台打包和编写适配加载代码</strong></p> <h3><strong>总结</strong></h3> <p>一般,我们在资源量较少、简单、无需热更和快速迭代的情况下选择Resources方式管理资源。</p> <h2><strong>Addressables</strong></h2> <p>Addressables方式管理资源是官方替代传统AB方式管理资源的方案。目前,项目工程有引入【Addressables】包。不过,在引擎组件和播放组件中并未大量使用,主要还是使用传统的AB管理框架或Resources的方式(Addressables是从Unity 2018+后开始支持的)。</p> <h3><strong>优点</strong></h3> <p><strong>1. 灵活的资源加载:</strong>Addressable Assets System允许根据运行时的条件动态加载和卸载资源,可以根据游戏逻辑或用户输入来决定加载哪些资源,提供了更灵活的资源管理能力。</p> <p><strong>2. 资源分离和热更新:</strong>Addressable Assets System支持将资源分离为独立的AssetBundles,可以实现资源的热更新,减少了游戏包的大小,并且可以在游戏运行时动态加载新的AssetBundles。</p> <p><strong>3. 跨平台兼容:</strong>Addressable Assets System可以在不同平台上使用,无需额外的适配工作,提供了跨平台兼容的资源管理方式。</p> <p><strong>4. 资源版本控制:</strong>Addressable Assets System支持资源的版本控制,可以方便地管理和更新不同版本的资源。</p> <p><strong>5. 支持数据加密</strong></p> <h3><strong>缺点</strong></h3> <p>1. <strong>需要一定的学习成本</strong>:相比于传统的资源管理方式,使用Addressable Assets System需要学习和理解一些新的概念和工作流程,对于新手来说可能需要一定的学习成本。</p> <h2><strong>YooAssets</strong></h2> <p><a href="https://www.yooasset.com/docs/Introduce">免费开源的资源管理系统</a></p> <p>最为流行的第三方资源管理方案。</p> <h1><strong>建议方案</strong></h1> <p>现阶段,物件播放器组件优先处理重构以及问题处理,使用Resources方式可以更加快速的打通。因此,建议使用Resources作为资源管理方案,资源直接内置在包中。</p>

页面列表

ITEM_HTML