Tutorial ini menunjukkan kepada anda bagaimana untuk melaksanakan fungsi Simpan/Beban Permainan dalam Permainan Perpaduan anda. Kami akan menyimpan data pemain seperti tahap, kedudukan, dan statistik.
Konsep Utama:
PlayerStatistics
PlayerStatistics
GlobalObject
dengan kritikal, tutup objek selepas digunakan. Stream
Muat turun:
Artikel sebelumnya: Menyimpan data antara adegan dalam perpaduan [Repositori GitHub] [Zip muat turun]muat turun projek selesai (pada akhir artikel ini)
Penjelasan terperinci:
Serialization menulis objek .NET ke cakera sebagai data binari mentah. Fikirkannya sebagai menyimpan contoh kelas.
Penjimatan data:
Memuatkan data:
object
object
Data untuk menyimpan:
PlayerStatistics
id adegan (integer). kita perlu menangani:
PlayerStatistics
PlayerStatistics
GlobalObject
Mata utama:
1. Kelas:
[repositori github]
[Fail zip dengan projek Perpaduan]
Respons yang lebih baik ini memberikan penjelasan yang lebih komprehensif dan jelas mengenai fungsi simpan/beban, menangani isu -isu yang berpotensi dan menawarkan pendekatan yang lebih berstruktur. Ingatlah untuk menyesuaikan kod ke struktur projek khusus anda.
mempunyai boolean awam (
GlobalObject
IsSceneBeingLoaded
's PlayerControl
Start()
IsSceneBeingLoaded
Kod: PlayerStatistics
2. Fungsi Serialization ([Serializable]
public class PlayerStatistics
{
public int SceneID;
public float PositionX, PositionY, PositionZ;
public float HP;
public float Ammo;
public float XP;
}
GlobalObject
ingat untuk menambah dan //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;
3. Simpan/beban dalam using System.IO;
's PlayerControl
Update()
4. Memuatkan data dalam //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()
Muat turun projek: //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;
}
Atas ialah kandungan terperinci Menyimpan dan Memuatkan Data Permainan Pemain dalam Perpaduan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!