自动化生成持久化游戏管理器
- 引言
- 游戏管理器持久化
- 自动化生成游戏管理器
- Addressables
引言
自动化生成的持久化游戏管理器是一个指通过使用自动化工具和技术来生成游戏的持久化管理器的过程。持久化管理器是负责管理游戏状态的组件,包括存储和检索游戏数据的功能,如玩家信息、游戏设置和进度等。通过将持久化管理器与自动化工具相结合,可以快速创建并维护游戏状态,并允许游戏设计师专注于更重要的游戏玩法和用户体验方面。
自动化生成的持久化游戏管理器通常基于模板和脚本来生成,并使用数据持久化技术,如本地文件或云端存储来存储游戏状态。这些管理器通常允许游戏设计师和开发人员定义和配置游戏状态的结构和规则,并提供易于使用的界面来访问和管理游戏状态数据。
通过使用自动化生成的持久化游戏管理器,游戏设计师和开发人员可以节省大量的时间和精力,并加快游戏开发的速度和效率。这种方法还可以提高游戏的可维护性和可扩展性,使其更易于管理和更新。
游戏管理器持久化
添加一个空的游戏物体,命名为GameManager,在创建一个脚本挂载到游戏物体上
脚本内容
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;
public class GameManager : MonoBehaviour
{
void Awake()
{
DontDestroyLoad(gameobject)
}
}
这样可以看到在运行游戏时,出现了一个新的DontDestroyLoad的场景,在这里的游戏物体不会被销毁这样就完成了游戏管理器的持久化
自动化生成游戏管理器
在完成游戏管理器的持久化之后,我们想要去实现切换场景,游戏管理器也可以在其他场景生成的情况,这个时候我们就要导入一个包
Addressables
再将GameManager设置为预制体然后再编辑预制体的属性
勾选Addressable,将后面的值更改为GameManager,这在后续代码中需要使用。
编辑脚本
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;
public class GameManager : MonoBehaviour
{
//定义了一个字符串常量 GameManagerKey,
//表示游戏管理器在Addressables中的键值。
const string GameManagerKey = "GameManager";
//使用 [RuntimeInitializeOnLoadMethod] 特性来标记一个静态方法
//CreateNewGameManager(),该方法将在场景加载之前被调用。
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
//CreateNewGameManager() 方法使用Addressables系统的 InstantiateAsync() 方法来异步加载和实例化游戏管理器预制件
//并将其添加到当前场景中。
static void CreateNewGameManager()
{//InstantiateAsync() 方法返回一个 AsyncOperationHandle 对象,该对象表示实例化过程的异步操作。
//使用 Completed 事件处理程序来等待实例化操作完成后执行下一步操作。
Addressables.InstantiateAsync(GameManagerKey).Completed += operationHandle =>
{
DontDestroyOnLoad(operationHandle.Result);
};
}
static void OnInstantiated(AsyncOperationHandle<GameObject> operationHandle)
{
DontDestroyOnLoad(operationHandle.Result);
}
}
自动化生成持久化游戏管理器就做好了
你可以看到在新的场景和老的场景中运行时都有GameManager