Unity 之 抖音小游戏本地数据最新存储方法分享

这篇具有很好参考价值的文章主要介绍了Unity 之 抖音小游戏本地数据最新存储方法分享。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

抖音小游戏是一种基于抖音平台开发的小型游戏,与传统的 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和官方文档进行比较。

官方文件系统文档地址

Unity 之 抖音小游戏本地数据最新存储方法分享


2.3 存储数据

涉及知识点:

  1. 写入文件
    可以写入字符串 string 或者 字节数组byte[]两种类型,也有同步异步两种方式。
  2. 读取文件
    写入时用的什么类型存储,读取时就使用使用类型。字符串方式写入默认编码格式为utf8
  3. 校验文件/目录是否存在

同步写法参考代码如下:

/// <summary> 
/// 存储数据
///     --> 不存在,创建并写入
///     --> 已存在,读取并写入
/// PS:地址要以上面获取的 dyFilePath 作为根目录,后面则可自行创建
/// </summary>
/// <param name="filePath">文件存储地址</param>
/// <param name="fileContext">文件存储内容</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 其他相关操作

复制文件:也同样有同步和异步两种方法,使用方式和上面基本一致
Unity 之 抖音小游戏本地数据最新存储方法分享

重命名文件:
Unity 之 抖音小游戏本地数据最新存储方法分享


三,小结

抖音小游戏文件存储系统是一个非常重要的组成部分,它提供了一种简单、可靠的方式来存储和管理小游戏中的数据。此文件存储系统支持存储和读取文本、JSON、二进制等类型的数据,并提供了多种 API 来实现数据的存储和访问。

在开发抖音小游戏时,可以使用抖音小游戏文件存储系统来实现数据的存储和访问,从而提高小游戏的性能和用户体验。文章来源地址https://www.toymoban.com/news/detail-508655.html

到了这里,关于Unity 之 抖音小游戏本地数据最新存储方法分享的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用unity发布抖音小游戏

    1.要选择对应的unity版本 如果使用 native 方案:确认游戏工程运行在 Unity 2019.4.8f1 或者 Unity 2019.4.35f1 如果使用 wasm 方案:建议使用 unity 最新版,比如 2021.2 之后的版本,在 wasm 方面做了很多优化 可以用 2019.4.8 构建 native 版本,用 2021.x 构建 wasm,一起发布。 重要: editor 和 A

    2024年02月15日
    浏览(37)
  • Unity发布抖音小游戏:SDK接入

    上篇介绍Unity小游戏发布抖音平台的开发者账号注册以及小游戏创建和申请。本篇介绍字节SDK接入Unity游戏项目中。 接入参考教程:Docs,下载bgdt.package包,并导入Unity项目工程。    打开ByteGame菜单,弹出字节工具面板。点击下载安装另外2个字节小游戏工具。   安装完毕后,

    2024年02月16日
    浏览(33)
  • Unity发布抖音小游戏的一些注意事项

    使用 webgl模式 发布抖音小游戏的一些注意事项 1.打包 使用webgl模式打包抖音小游戏,会因为找不到aapt工具导致打包失败 提示: aapt检查失败: sdk/build-tools/版本号。 解决方法:再unity hub里添加Android Build Support  2.黑屏问题 相机的HDR设为off 3.Text字体不见的问题 不能用unity自带的

    2024年02月11日
    浏览(33)
  • cocoscreator 发布抖音小游戏

    发布到字节跳动小游戏 字节小游戏是基于字节跳动全产品矩阵开发,不需用户下载,点开即玩的全新游戏类型。 小游戏的游戏提交,审核和发布流程等,需要遵守字节官方团队的要求和标准流程,具体信息可以参考 字节跳动小游戏接入指南。 准备工作 下载 字节跳动开发者

    2023年04月09日
    浏览(29)
  • 小程序游戏对接广告收益微信小游戏抖音游戏软件

    小程序游戏对接广告是一种常见的游戏开发模式,开发者可以通过在游戏中嵌入广告来获取收益。以下是一些与小程序游戏对接广告收益相关的关键信息: 小程序游戏广告平台选择: 选择适合你的小程序游戏的广告平台非常重要。不同的平台提供不同类型的广告,包括横幅

    2024年02月04日
    浏览(35)
  • 植物大战僵尸小游戏抖音快手直播搭建弹幕插件教程

    植物大战弹幕插件功能介绍 该插件由梦歌技术部团队支持开发,本插件软件通过监测抖音弹幕信息,获取礼物数据触发脚本插件对应的功能; 功能目前基本上已经完善,后期功能会陆续上线支持更新,全新的脚本监测稳定方便实用! 1.打开植物大战僵尸游戏 2.打开弹幕插件

    2024年02月02日
    浏览(223)
  • 【Unity小游戏】游戏开发案例-Unity打造畅玩无阻的小游戏(上)

    乒乓克隆 使用立方体建造竞技场、球拍和球。 移动球和球拍。 击球并得分。 让相机感受到冲击力。 给游戏一个抽象的霓虹灯外观。 这是有关基础游戏的系列教程中的第一个教程。在其中,我们将创建一个简单的 Pong 克隆。 本教程是使用 Unity 2021.3.16f1 制作的。 本系列将涵

    2024年02月13日
    浏览(31)
  • cocos creator上架字节跳动(抖音)小游戏注意事项(匿名登录、录屏、分享等踩坑记录)

    常见拒绝原因1:小游戏无录屏功能,不符合平台要求 2:小游戏录屏时间小于3S,分享按钮点击无反应或提示错误文案,不符合平台要求 3:小游戏录屏时间大于300S,分享按钮点击无反应或无法正常分享录屏,不符合平台要求 不久前写了款小游戏,最近上架了字节跳动小游戏平

    2024年01月16日
    浏览(34)
  • 微信、抖音小游戏使用XMLHttpRequest请求超时(request:fail timeout)readyState始终为1的解决方案

    前阵子又有小游戏挂掉了,用户登录不上,而且是微信抖音都有该现象,调试了下发现是XMLHttpRequest往后端发送请求,没有得到响应引起的,readyState正常是1234状态,但是BUG发生时readyState到1就卡住了。监听onerror事件得到了request:fail timeout的错误日志。猜测可能是数据量过大而

    2024年02月04日
    浏览(60)
  • cocos creator对接字节跳动(抖音)小游戏激励视频广告注意事项(审核不通过,次数不一致和重复获得奖励等)

    首先是官方文档里的对接方式:(https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/api/open-interface/ads/rewarded-video/tt-createRewardedVideoAd) 在cocos creator开发的小游戏中,把onLoad换成start就差不多了,场景初始化的时候把视频对象初始化好,事件绑定好,如果是单场景的游戏确

    2024年02月16日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包