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 += OnLoadCompleted;

6、释放资源

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

Addressables.Release(asset);