如何构建一个成功的vs网站开发源码社区?
摘要:vs网站开发源码,网站社区建设,dw建网站,企业网站建设策划书方案范文Unity 之 抖音小游戏本地数据最新存储方法分享 一、抖音小游戏文件存储系统背景二、文件存储系统的使用方法2.1 初始化2.1 创建目录2.3 存储数据2.4 删除目录
vs网站开发源码,网站社区建设,dw建网站,企业网站建设策划书方案范文Unity 之 抖音小游戏本地数据最新存储方法分享 一、抖音小游戏文件存储系统背景二、文件存储系统的使用方法2.1 初始化2.1 创建目录2.3 存储数据2.4 删除目录/文件2.5 其他相关操作 三#xff0c;小结 抖音小游戏是一种基于抖音平台开发的小型游戏#xff0c;与传统的 APP 不… Unity 之 抖音小游戏本地数据最新存储方法分享 一、抖音小游戏文件存储系统背景二、文件存储系统的使用方法2.1 初始化2.1 创建目录2.3 存储数据2.4 删除目录/文件2.5 其他相关操作 三小结 抖音小游戏是一种基于抖音平台开发的小型游戏与传统的 APP 不同抖音小游戏运行在抖音客户端内部可以通过抖音的分享、推荐等功能进行传播。在抖音小游戏开发过程中文件存储系统是一个非常重要的组成部分本文将详细介绍抖音小游戏文件存储系统的实现原理和使用方法。 一、抖音小游戏文件存储系统背景
官方文档使用新文件系统说明 内容包括了
新文件系统的背景已有存档文件迁移方法数据对比在老文件系统上写入约400MB的文件后打开游戏后占用内存约1G在迁移后则基本不会再占用内存游戏内存将至630MB左右
在原有实现中C#标准的文件接口如File.ReadAllText、File.WriteAllText、FileStream等是将数据写入到内存文件系统然后再在合适的时机自动同步内存数据到IndexedDB中存储。由于采用了IndexedDB文件存储系统使得运行时内存有一定的增加如果文件数量过多可能会发生闪退。
另外IndexedDB文件存储系统兼容性不够好在部分iOS系统上会无法正常使用从而导致无法正常进入游戏的情况。所以我们提供 StarkFileSystemManager接口作为替换开发者可以通过调用StarkSDKSpace.StarkSDK.API.GetStarkFileSystemManager()方法来使用新的文件存储系统。 二、文件存储系统的使用方法
2.1 初始化
在使用文件系统时我会习惯性的做一个初始化首先需要获取文件系统管理器对象StarkFileSystemManager然后获取到一个用户数据存储的路径StarkFileSystemManager.USER_DATA_PATH。
后面的文件相关操作都要在 dyFileSystemdyFilePath 两个变量的基础上进行操作。
初始化参考代码如下
using StarkSDKSpace;public class StarkSDKTest : MonoBehaviour
{// 抖音存储文件系统private StarkFileSystemManager dyFileSystem;// 用户数据存储的路径private string dyFilePath;void Start(){dyFileSystem StarkSDK.API.GetStarkFileSystemManager();dyFilePath StarkFileSystemManager.USER_DATA_PATH;}
}2.1 创建目录
创建目录有同步和异步两种写法
同步方法MkdirSync(string dirPath, bool recursive false);
dyFileSystem.MkdirSync(dicPath, false);
第一个参数表示创建的目录路径注意地址要以上面获取的 dyFilePath 作为根目录。第二个参数表示是否在递归创建该目录的上级目录后再创建该目录。如果对应的上级目录已经存在则不创建该上级目录。
示例代码
void CreateDic(string dicPath)
{// 判断文件是否存在if (!dyFileSystem.AccessSync(dicPath)){string isSucc dyFileSystem.MkdirSync(dicPath, false);Debug.Log($创建目录成功状态{isSucc} 为空则表示创建成功);}else{Debug.Log($已经存在此目录{dicPath}, 无需再次创建);}
}异步方法 Mkdir(MkdirParam param)
参数与同步方法一致可添加创建成功或失败回调。
void CreateDicAsync(string dicPath)
{if (!dyFileSystem.AccessSync(dicPath)){MkdirParam param new MkdirParam();param.dirPath dicPath;param.recursive false;param.fail delegate(StarkBaseResponse response){Debug.Log($异步创建目录失败失败原因: errCode:{response.errCode} , errMsg:{response.errMsg});};param.success response { Debug.Log($异步创建目录成功执行成功回调。);};dyFileSystem.Mkdir(param);}else{Debug.Log($已经存在此目录{dicPath}, 无需再次创建);}
}若创建失败则可根据errMsg进行修改若不清楚如何修改可以使用errCode和官方文档进行比较。
官方文件系统文档地址 2.3 存储数据
涉及知识点
写入文件 可以写入字符串 string 或者 字节数组byte[]两种类型也有同步异步两种方式。读取文件 写入时用的什么类型存储读取时就使用使用类型。字符串方式写入默认编码格式为utf8。校验文件/目录是否存在
同步写法参考代码如下
/// summary
/// 存储数据
/// -- 不存在创建并写入
/// -- 已存在读取并写入
/// PS地址要以上面获取的 dyFilePath 作为根目录后面则可自行创建
/// /summary
/// param namefilePath文件存储地址/param
/// param namefileContext文件存储内容/param
void CreateFile(string filePath, string fileContext)
{if (!dyFileSystem.AccessSync(filePath)){string isSucc dyFileSystem.WriteFileSync(filePath, fileContext, utf8);Debug.Log($创建文件成功状态{isSucc} 为空则表示创建成功);}else{// 读取并写入 -- 注意编码格式与创建一致string readContext dyFileSystem.ReadFileSync(filePath, utf8);Debug.Log($读取文件内容{readContext});string isSucc dyFileSystem.WriteFileSync(filePath, readContext fileContext);Debug.Log($读取并写入{filePath}, 无需再次创建);}
}2.4 删除目录/文件
dyFileSystem.RmdirSync(delPath, false);
第一个参数表示删除目录/文件的路径。第二个参数表示是否递归删除目录。如果为 true则删除该目录和该目录下的所有子目录以及文件。为false则删除指定目录/文件。
// 删除文件/目录
void DeleteFileOrDic(string delPath)
{if (dyFileSystem.AccessSync(delPath)){// 第二个参数表示是否递归删除目录。如果为 true则删除该目录和该目录下的所有子目录以及文件string isSucc dyFileSystem.RmdirSync(delPath, false);Debug.Log($删除文件/目录成功状态{isSucc} 为空则表示删除成功);}else{Debug.Log($不存在此文件/目录{delPath}, 无需删除);}
}2.5 其他相关操作
复制文件也同样有同步和异步两种方法使用方式和上面基本一致
重命名文件 三小结
抖音小游戏文件存储系统是一个非常重要的组成部分它提供了一种简单、可靠的方式来存储和管理小游戏中的数据。此文件存储系统支持存储和读取文本、JSON、二进制等类型的数据并提供了多种 API 来实现数据的存储和访问。
在开发抖音小游戏时可以使用抖音小游戏文件存储系统来实现数据的存储和访问从而提高小游戏的性能和用户体验。
