Menyimpan dan Memuatkan Data Permainan Pemain dalam Perpaduan
Feb 19, 2025 am 11:33 AMTutorial 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:
- Serialization: Kesatuan Penggunaan .NET/Mono Serialization Untuk menulis objek .NET ke cakera keras dalam bentuk binari.
- Data disimpan: Termasuk (tahap, kedudukan, dll), ID adegan, dan lokasi di tempat kejadian pemain.
PlayerStatistics
- SAVING: Dapatkan data pemain dan bersiri ke fail.
- Memuatkan: Cari fail simpan, deserialize ke dalam objek generik, dan masukkannya ke jenis kelas data anda.
- adegan & kedudukan: Tambahkan integer untuk ID adegan dan tiga terapung (x, y, z) untuk kedudukan pemain ke kelas .
PlayerStatistics
- Fungsi Serialization: Buat fungsi (dalam atau serupa) untuk mengendalikan penjimatan dan pemuatan.
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:
- Dapatkan kelas yang mengandungi data pemain.
- bersiri ke fail yang diketahui pada cakera keras.
Memuatkan data:
- Cari fail simpan.
- deserialize kandungan ke dalam generik
- .
object
Cast - ke jenis kelas data anda.
object
Data untuk menyimpan:
- data
-
PlayerStatistics
id adegan (integer). - kedudukan pemain (tiga terapung: x, y, z).
kita perlu menangani:
- ID adegan:
- Tambahkan pemboleh ubah integer ke .
PlayerStatistics
POSISI PLAYER: - Tambah tiga terapung (x, y, z) ke (transformasi dan vektor3s tidak langsung bersiri).
PlayerStatistics
simpan/beban prosedur: - Gunakan hotkeys (mis., F5 untuk menyelamatkan, f9 untuk memuatkan). Permainan Permainan/Load Baru:
- Gunakan boolean dalam untuk mengesan sama ada adegan dimuatkan dari simpan atau mula segar.
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!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Di dunia di mana kepercayaan dalam talian tidak boleh dirunding, sijil SSL telah menjadi penting bagi setiap laman web. Saiz pasaran pensijilan SSL bernilai USD 5.6 bilion pada tahun 2024 dan masih berkembang dengan kuat, didorong oleh perniagaan e-dagang yang melonjak

Gerbang pembayaran adalah komponen penting dalam proses pembayaran, membolehkan perniagaan menerima pembayaran dalam talian. Ia bertindak sebagai jambatan antara pelanggan dan saudagar, dengan selamat memindahkan maklumat pembayaran dan memudahkan urus niaga. Untuk

Dalam apa yang kelihatan seperti satu lagi kemunduran untuk domain di mana kita percaya manusia akan selalu melampaui mesin, para penyelidik kini mencadangkan agar AI memahami emosi yang lebih baik daripada yang kita lakukan.

Model kecerdasan buatan baru (AI) telah menunjukkan keupayaan untuk meramalkan peristiwa cuaca utama dengan lebih cepat dan dengan ketepatan yang lebih besar daripada beberapa sistem ramalan global yang paling banyak digunakan. Model ini, bernama Aurora, telah dilatih U

Suka atau tidak, kecerdasan buatan telah menjadi sebahagian daripada kehidupan seharian. Banyak peranti-termasuk pisau cukur elektrik dan berus gigi-telah menjadi berkuasa AI, "menggunakan algoritma pembelajaran mesin untuk mengesan bagaimana seseorang menggunakan peranti, bagaimana devi

Kecerdasan Buatan (AI) bermula sebagai usaha untuk mensimulasikan otak manusia. Ia kini dalam proses mengubah peranan otak manusia dalam kehidupan seharian? Revolusi perindustrian mengurangkan pergantungan pada buruh manual. Sebagai seseorang yang menyelidik aplikasinya

Semakin tepatnya kita cuba membuat fungsi model AI, semakin besar pelepasan karbon mereka menjadi - dengan petunjuk tertentu menjana sehingga 50 kali lebih banyak karbon dioksida daripada yang lain, menurut kajian baru -baru ini. Model -model yang berlaku seperti Claude Antropik

Model kecerdasan buatan (AI) boleh mengancam dan memeras ugut manusia apabila terdapat konflik antara objektif model dan keputusan pengguna, menurut satu kajian baru. Diterbitkan pada 20 Jun, penyelidikan yang dijalankan oleh firma AI Anthropic memberikan lnya L
