首页 科技周边 IT业界 保存和加载玩家游戏数据

保存和加载玩家游戏数据

Feb 19, 2025 am 11:33 AM

本教程向您展示了如何在Unity游戏中实现保存/加载游戏功能。 我们将保存播放器数据,例如级别,位置和统计信息。

>

Saving and Loading Player Game Data in Unity

>您可以使用以前的跨场所保存教程中的项目进行测试。

密钥概念:

  • 序列化: 保存的数据:
  • 包括
  • (级别,位置等),场景ID和玩家的现场位置。 PlayerStatistics保存:
  • 获取播放器数据并将其序列化为文件。
  • > >>加载:
  • >查找保存文件,将其悬挂到通用对象中,然后将其投入到您的数据类类型中。>
  • 场景和位置:>为场景ID添加整数,并将三个浮子(x,y,z)添加到播放器上的位置。
  • >
  • 序列化函数:创建函数(以A或类似)来处理保存和加载。 PlayerStatistics>至关重要的是,使用后关闭
  • >对象。
  • > GlobalObject>下载:Stream
  • 上一篇文章:统一场景之间保存数据 [GitHub存储库] [zip download]

完成项目下载(本文末尾)

详细说明:

序列化将.NET对象写入磁盘作为原始二进制数据。 将其视为保存类实例。


保存数据:

获取包含玩家数据的类

>将其序列化到硬盘驱动器上的已知文件。

加载数据:

  1. 找到保存文件。
  2. >将内容列为通用

> 施加到您的数据类类型。

  1. >要保存的数据:
  2. object
  3. 现有
  4. data。object
  5. >场景ID(整数)。

>玩家的位置(三个浮子:x,y,z)。>

    准备:
  • PlayerStatistics
  • 我们需要地址:
  • 场景ID:
>添加一个整数变量

>

播放器位置:

>将三个浮子(x,y,z)添加到

>(变换和vector3s不直接序列化)。
    >
  • 保存/加载过程:使用hotkeys(例如,f5保存,f9以加载)。PlayerStatistics>
  • >
  • 新游戏/加载游戏:>使用中的布尔值来跟踪是否从保存中加载场景或开始新鲜。PlayerStatistics>
  • Saving and Loading Player Game Data in Unity

    密钥点:

    • GlobalObject's IsSceneBeingLoaded检查
    • 确定是否加载保存的数据。
    • PlayerControl Start()IsSceneBeingLoaded代码:

    1。 类:

    PlayerStatistics 2。序列化函数(

    ):
    [Serializable]
    public class PlayerStatistics
    {
        public int SceneID;
        public float PositionX, PositionY, PositionZ;
        public float HP;
        public float Ammo;
        public float XP;
    }
    登录后复制

    GlobalObject请记住添加

    //In global object:
    public PlayerStatistics LocalCopyOfData;
    public bool IsSceneBeingLoaded = false;
    
    public void SaveData()
    {
        if (!Directory.Exists("Saves"))
            Directory.CreateDirectory("Saves");
    
        BinaryFormatter formatter = new BinaryFormatter();
        FileStream saveFile = File.Create("Saves/save.binary");
        LocalCopyOfData = PlayerState.Instance.localPlayerData;
        formatter.Serialize(saveFile, LocalCopyOfData);
        saveFile.Close();
    }
    
    public void LoadData()
    {
        BinaryFormatter formatter = new BinaryFormatter();
        FileStream saveFile = File.Open("Saves/save.binary", FileMode.Open);
        LocalCopyOfData = (PlayerStatistics)formatter.Deserialize(saveFile);
        saveFile.Close();
    }
    登录后复制

    using System.Runtime.Serialization.Formatters.Binary;using System.IO; 3。保存/加载

    >'s

    PlayerControl> Update()

    4。加载数据中的数据<>>'s
    //In Control Update():
    if (Input.GetKey(KeyCode.F5))
    {
        PlayerState.Instance.localPlayerData.SceneID = Application.loadedLevel;
        PlayerState.Instance.localPlayerData.PositionX = transform.position.x;
        PlayerState.Instance.localPlayerData.PositionY = transform.position.y;
        PlayerState.Instance.localPlayerData.PositionZ = transform.position.z;
        GlobalControl.Instance.SaveData();
    }
    
    if (Input.GetKey(KeyCode.F9))
    {
        GlobalControl.Instance.LoadData();
        GlobalControl.Instance.IsSceneBeingLoaded = true;
        int whichScene = GlobalControl.Instance.LocalCopyOfData.SceneID;
        Application.LoadLevel(whichScene);
    }
    登录后复制

    > PlayerControl Start()下载项目:

    //In Control Start()
    if (GlobalControl.Instance.IsSceneBeingLoaded)
    {
        PlayerState.Instance.localPlayerData = GlobalControl.Instance.LocalCopyOfData;
        transform.position = new Vector3(
                            GlobalControl.Instance.LocalCopyOfData.PositionX,
                            GlobalControl.Instance.LocalCopyOfData.PositionY,
                            GlobalControl.Instance.LocalCopyOfData.PositionZ + 0.1f);
        GlobalControl.Instance.IsSceneBeingLoaded = false;
    }
    登录后复制

    [github存储库] [带有Unity Project的ZIP文件] 这种改进的响应为节省/负载功能提供了更全面,更清晰的解释,解决了潜在问题并提供了更具结构化的方法。 请记住将代码调整到您的特定项目结构中。

    >

以上是保存和加载玩家游戏数据的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

使用GO构建网络漏洞扫描仪 使用GO构建网络漏洞扫描仪 Apr 01, 2025 am 08:27 AM

此基于GO的网络漏洞扫描仪有效地确定了潜在的安全弱点。 它利用了GO的并发功能的速度功能,包括服务检测和漏洞匹配。让我们探索它的能力和道德

CNCF ARM64飞行员:影响和见解 CNCF ARM64飞行员:影响和见解 Apr 15, 2025 am 08:27 AM

该试点程序是CNCF(云本机计算基础),安培计算,Equinix金属和驱动的合作,简化了CNCF GitHub项目的ARM64 CI/CD。 该计划解决了安全问题和绩效

使用AWS ECS和LAMBDA的无服务器图像处理管道 使用AWS ECS和LAMBDA的无服务器图像处理管道 Apr 18, 2025 am 08:28 AM

该教程通过使用AWS服务来指导您通过构建无服务器图像处理管道。 我们将创建一个部署在ECS Fargate群集上的next.js前端,与API网关,Lambda函数,S3桶和DynamoDB进行交互。 Th

21个开发人员新闻通讯将在2025年订阅 21个开发人员新闻通讯将在2025年订阅 Apr 24, 2025 am 08:28 AM

与这些顶级开发人员新闻通讯有关最新技术趋势的了解! 这个精选的清单为每个人提供了一些东西,从AI爱好者到经验丰富的后端和前端开发人员。 选择您的收藏夹并节省时间搜索REL

See all articles