保存和加載玩家遊戲數據
本教程向您展示瞭如何在Unity遊戲中實現保存/加載遊戲功能。 我們將保存播放器數據,例如級別,位置和統計信息。
>
>您可以使用以前的跨場所保存教程中的項目進行測試。
密鑰概念:
- 序列化:
保存的數據: 包括 - (級別,位置等),場景ID和玩家的現場位置。
PlayerStatistics
保存: 獲取播放器數據並將其序列化為文件。 - > >>加載: >查找保存文件,將其懸掛到通用對像中,然後將其投入到您的數據類類型中。
- 場景和位置:>為場景ID添加整數,並將三個浮子(x,y,z)添加到播放器上的位置。 >
- 序列化函數:
創建函數(以A或類似)來處理保存和加載。 PlayerStatistics
>至關重要的是,使用後關閉 >對象。 -
>
GlobalObject
>下載:Stream
上一篇文章:統一場景之間保存數據
[GitHub存儲庫]
[zip download]
完成項目下載(本文末尾)
詳細說明:
保存數據:
獲取包含玩家數據的類
>將其序列化到硬盤驅動器上的已知文件。
加載數據:
- 找到保存文件。
- >將內容列為通用
> 將施加到您的數據類類型。
- >要保存的數據:
object
- data。
>場景ID(整數)。object
>玩家的位置(三個浮子:x,y,z)。 >
- 準備:
-
PlayerStatistics
我們需要地址: - 場景ID:
>
播放器位置:>將三個浮子(x,y,z)添加到
>(變換和vector3s不直接序列化)。- >
-
保存/加載過程:使用hotkeys(例如,f5保存,f9以加載)。
PlayerStatistics
> > - 新遊戲/加載遊戲:>使用中的布爾值來跟踪是否從保存中加載場景或開始新鮮。
PlayerStatistics
>
態 -
GlobalObject
'sIsSceneBeingLoaded
檢查 確定是否加載保存的數據。 -
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。保存/加載
:PlayerControl
>
Update()
//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中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

此基於GO的網絡漏洞掃描儀有效地確定了潛在的安全弱點。 它利用了GO的並發功能的速度功能,包括服務檢測和漏洞匹配。讓我們探索它的能力和道德

該試點程序是CNCF(雲本機計算基礎),安培計算,Equinix金屬和驅動的合作,簡化了CNCF GitHub項目的ARM64 CI/CD。 該計劃解決了安全問題和績效

該教程通過使用AWS服務來指導您通過構建無服務器圖像處理管道。 我們將創建一個部署在ECS Fargate群集上的next.js前端,與API網關,Lambda函數,S3桶和DynamoDB進行交互。 Th

與這些頂級開發人員新聞通訊有關最新技術趨勢的了解! 這個精選的清單為每個人提供了一些東西,從AI愛好者到經驗豐富的後端和前端開發人員。 選擇您的收藏夾並節省時間搜索REL
