首頁 科技週邊 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