官方文档

开始

  • README
  • 快速入门

使用指南

  • Android申请读写权限配置流程
  • 创建存档系统配置(FlexiArchiveSetting)
  • 创建存档系统
  • 创建自定义数据类型
  • 存档的读写
  • 对象字段与数据绑定 – 简化存档流程
  • 保存存档
  • 切换存档
  • 克隆存档
  • 删除存档

FAQ

  • 安卓上无法正常工作怎么办?
  • 支持跨平台吗?

其他

  • Github
  • 首页
  • Docs
  • Flexi Archive
  • 开始

建议你在使用 Flexi Archive 前,先打开 Sample 案例。 Engine/Unity/Sample/Scenes/Demo1

在 Sample 案例中,你可以快速学习到 Flexi Archive System 的核心功能。

 

设置用户ID #

Flexi Archive 存档系统支持同一设备下多账号存档共存。

因此若你的程序含登录业务,那么需要你在用户登录成功后设置 USER_KEY 。示例:DataArchiveConstData.USER_KEY = "Wenen";

初始化存档系统 #

Flexi Archive 支持你同时创建多个存档系统的实例,这些存档系统之间是隔离的。

你需要初始化对应的存档系统实例,例如Sample案例中的DataManagerSample类,在合适的时候执行它的Init函数。DataManagerSample.instance.Init();

存档的读写 #

Flexi Archive 提供了多种存档读写的操作方案,包括:

1.持有DataObject操作存档  存档的读写 - Flexi Archive

2.对象字段与数据绑定  对象字段与数据绑定 - 简化存档流程

其中DataObject是核心,但对象字段与数据绑定的操作也极大地简化了存档流程。

以下是对这两种存档操作的简要介绍:

持有DataObject操作存档 #

1.通过 GroupKey + DataKey 得到一个DataObject实例:archiveManager.GetDataObject("group1", "key1"); 。

2.DataObject相当一个数据管理容器,我们可以从DataObject中获取到具体的数据对象。例如持有String值的数据对象 - DataString:

 DataString dataString = dataObject.GetData<datastring>();

3.写入数据:

dataString.Write("温文,一个喜欢创造的游戏开发工程师。");

4.读取数据:

private string Demo2_ReadStrFromDisk()
{
	DataObject dataObject = archiveManager.GetDataObject("group1", "key1");
	DataString dataString = dataObject.GetData<DataString>();
	string str = dataString.DiskData;
	return str;
}

对象字段与数据绑定 #

对象字段与数据绑定是Flexi Archive提供的另一种简化存档流程的操作方案。这种方式利用了数据绑定的特性,使得对象字段的变化能够自动反映到存档数据中,从而简化了存档操作。

代码示例:( 更多绑定方式见文档 :  对象字段与数据绑定 - 简化存档流程  )

 

public class DataContainerForSave_Sample : FlexiDataContainer
    {
        public string author
        {
            get => GetMemoryValue<DataString, string>("FlexiDataSave","author");
            set => ModifyValue<DataString, string>("FlexiDataSave","author", value);
        }
        
        public int age
        {
            get => GetMemoryValue<DataInteger, int>("FlexiDataSave","age");
            set => ModifyValue<DataInteger, int>("FlexiDataSave","age", value);
        }
    
        public DataContainerForSave_Sample(IFlexiDataArchiveManager dataArchiveManager)
        {
            SetDataArchiveManager(dataArchiveManager);
        }
    }

 

保存存档 #

注意:以上对数据的修改,只会使 Memory 的数据发生变化。你需要在合适的时机,执行保存。

Flexi Archive 支持异步存档,你可以选择存档操作是否异步执行。

	private void Demo_SavePoint(bool isAsync)
	{
		Debug.Log(string.Format($"save archive"));
		if (isAsync)
		{
			archiveManager.SaveAsync(() => { Debug.Log("async save successfully");});
		}
		else
		{
			archiveManager.Save();
			Debug.Log("save successfully");
		}
	}

切换存档 #

private void SwitchArchive(int archiveID)
{
	archiveManager.SwitchArchiveID(archiveID);
	Debug.Log(string.Format($"Switch Archive {archiveID}"));
}

如若获取当前的所有存档ID,如下:archiveManager.ArchiveSetting.GetAllArchiveID(); 。如此你可以将他们展示在界面上,使用户交互。

克隆存档 #

Flexi Archive提供了克隆存档操作,用户可以从当前存档克隆出一份新存档。archiveManager.InstantiateNewArchive();

删除存档 #

删除当前存档的全部数据

private void Demo_DeleteCurrentArchive()
{
	archiveManager.DeleteAll();
	Debug.Log(string.Format($"Delete Current All Data"));
}

 

 

有疑问?需要帮助?

有疑问?需要帮助?

Updated on 2024年10月12日
README
Table of Contents
  • 设置用户ID
  • 初始化存档系统
  • 存档的读写
    • 持有DataObject操作存档
    • 对象字段与数据绑定
  • 保存存档
  • 切换存档
  • 克隆存档
  • 删除存档
  • 首页
  • UML
  • Github
  • 知乎
  • Flexi Archive
Copyright © 2025 温文的小屋
闽ICP备2022009151号-2

一个好的游戏不仅仅可以玩,更可以向玩家传递一种境界,真正做到第九艺术的诠释。 –陈星汉