首页 > 其他分享 >Unity 如何基于addressable来做资源管理

Unity 如何基于addressable来做资源管理

时间:2024-01-23 09:33:57浏览次数:17  
标签:addressable Group 游戏 Unity Addressable 资源管理 资源 加载

一、什么是Addressable系统

Addressable系统是Unity 2018.3版本中推出的一种资源管理方案,它可以帮助我们更好地管理游戏中的资源。在以往的游戏开发中,我们通常使用Resources来进行资源加载,但是这种方式存在很多问题,比如加载速度慢、内存占用高等。Addressable系统可以解决这些问题,它可以实现资源的异步加载、动态加载、按需加载等功能,从而提高游戏的效率和用户体验。

对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习。

二、Addressable系统的优势

1、异步加载

Addressable系统可以实现资源的异步加载,这意味着游戏中的资源可以在后台加载,不会影响游戏的运行。这种方式可以提高游戏的加载速度,同时也可以减少内存占用,从而提高游戏的性能。

2、动态加载

Addressable系统可以实现资源的动态加载,这意味着游戏中的资源可以在运行时加载,而不是在游戏启动时加载。这种方式可以提高游戏的灵活性,同时也可以减少游戏的启动时间。

3、按需加载

Addressable系统可以实现资源的按需加载,这意味着游戏中只有需要的资源才会被加载,而不是所有的资源都被加载。这种方式可以减少内存占用,从而提高游戏的性能。

三、Addressable系统的使用

1、安装Addressable系统

在Unity中安装Addressable系统非常简单,只需要在Unity Hub中选择“Add Modules”->“Addressables”即可。安装完成后,Unity会在项目中自动创建一个“Addressable Assets”文件夹,用于存放资源。

2、创建Addressable Group

在Addressable系统中,我们需要创建一个或多个Addressable Group来管理资源。在“Addressable Assets”文件夹中右键选择“Create”->“Addressable Group”即可创建一个新的Addressable Group。在创建过程中,我们可以选择不同的打包方式、压缩方式、加载方式等。

3、添加资源

在创建完Addressable Group后,我们需要将资源添加到这个Group中。在“Addressable Assets”文件夹中右键选择“Create”->“Addressable Asset”即可创建一个新的Addressable Asset,并将其添加到指定的Addressable Group中。

4、打包资源

在添加完资源后,我们需要将这些资源打包成AssetBundle,以便在游戏运行时进行加载。在Unity中,我们可以使用Addressable系统提供的打包工具来进行打包操作。在打包完成后,Unity会在“Addressable Assets”文件夹中自动生成一个“AssetBundles”文件夹,用于存放打包后的资源。

5、加载资源

在游戏运行时,我们可以使用Addressable系统提供的API来加载资源。比如,我们可以使用Addressables.LoadAssetAsync方法来异步加载资源:

Addressables.LoadAssetAsync<GameObject>("prefab");

 

在加载过程中,我们可以使用异步回调函数来处理加载完成后的逻辑:

Addressables.LoadAssetAsync<GameObject>("prefab").Completed += onl oadCompleted;

 

6、释放资源

在游戏运行过程中,我们需要释放不再使用的资源,以减少内存占用。在Addressable系统中,我们可以使用Addressables.Release方法来释放资源:

Addressables.Release(asset);

标签:addressable,Group,游戏,Unity,Addressable,资源管理,资源,加载
From: https://www.cnblogs.com/bycw/p/17981644

相关文章

  • Unity如何设计一个技能系统
    一、技能系统的设计思路技能系统是游戏中非常重要的一部分,因此在设计技能系统时需要考虑以下几个方面:对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习。1.技能类型不同的游戏有不同的技能类型,例如魔......
  • Unity3D 协程的优缺点详解
    前言Unity3D是一款强大的游戏开发引擎,它提供了许多功能和工具,以帮助开发者创建高质量的游戏。其中一个非常重要的功能就是协程(Coroutine)。协程是一种特殊的函数,它可以在执行过程中暂停并在稍后的时间点继续执行。在本文中,我们将详细探讨Unity3D协程的优缺点,并提供一些技术详解和......
  • Unity:Couldn't open include file 'Packages/com.unity.render-pipelines.universal/S
    初学Shader,Unity报错↑,总之是找不到ulsl的Core文件,网上找的其他解决方案例如删除文件夹再生成或者改变shader的某些属性,但是根本找不到。最终找到原因是项目类型不同,要把传统3D升级成URP项目。解决办法:安装UniversalRP拓展1.在unity中打开需要升级的场景,SaveAs一份并打开该场......
  • WPF 使用CommunityToolkit.Mvvm实现Binding示例
    WPF在国内的发展一言难尽。属于那种死不死,活不活的状态。现在应用最多的场景就是上位机了。最近研究了一下WPF中重要的特性之一Binding。如果你没有学会它,基本WPF就没有学明白。研究Binding的时候,我也用了MVVM特性,这也是WPF必学的科目之一。我原来用的是MVVMLight。可是后来......
  • wpf 使用CommunityToolKit.Mvvm实现绑定验证
    接上一个文章,我们在上一个文章中使用CommunityToolKit.Mvvm写了绑定。我们在这篇文章中,写一下绑定验证。绑定验证在WPF系统中也是非常重要的一环。验证可以使得你的系统变得非常健壮。除非你的系统是游戏级别的自娱自乐级别。要么我都建议你加上验证。还是那句老话,写程序一定要......
  • Unity3D 触发器的触发原理详解
    Unity3D是一个强大的游戏开发引擎,它提供了丰富的功能和工具来帮助开发者轻松创建游戏。其中一个重要的功能就是触发器(Trigger),它可以用于检测游戏中的碰撞事件或者其他特定的触发条件,并在满足条件时触发相应的行为。本文将详细介绍Unity3D触发器的触发原理,并给出相应的技术详解和代......
  • Unity3D 游戏服务端哪些模块可以做成无状态详解
    Unity3D游戏服务端是指在使用Unity3D引擎开发的游戏中,负责处理与游戏客户端的通信以及游戏逻辑的服务器端。在设计游戏服务端时,有一种常见的设计模式叫做无状态模式。本文将详细介绍Unity3D游戏服务端哪些模块可以做成无状态,并给出技术详解和代码实现。对啦!这里有个游戏开发交流......
  • Unity下实现跨平台的RTMP推流|轻量级RTSP服务|RTMP播放|RTSP播放低延迟解决方案
    技术背景 2018年,我们开始在原生RTSP|RTMP直播播放器的基础上,对接了Unity环境下的低延迟播放,毫秒级延迟,发布后,就得到了业内一致的认可。然后我们覆盖了Windows、Android、iOS、Linux的RTMP推送、轻量级RTSP服务和RTSP|RTMP播放。目前看,Unity环境下,我们在行业内的延迟几乎是最低的(当......
  • 常用Unity的优化技巧集锦
    Unity性能优化是面试的时候经常被问道的一些内容,今天给大家分享一些常用的Unity的优化技巧和思路,方便大家遇到问题时候参考与学习。包体大小优化游戏的安装包体大小对于游戏开发而言非常重要,因为发布后这些包都会上传到渠道或商店让用户下载,包体越小用户下载的时间就越少,如果一......
  • Unity 程序员UI编码规范
    今天给大家分享UnityUI开发相关的一些编码和规范,有了这些指导规范,帮助你的项目获得更好的性能,少走弯路。UnityGUI(也被称为UGUI)经常是项目性能问题的来源。考虑使用多分辨率和宽高比大部分情况下,我们一套UI,能基本全部适配好,UnityUI让建立一个可以适应不同分辨率和宽高比屏幕调......