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:
- 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!

Tinggal maklumat mengenai trend teknologi terkini dengan surat berita pemaju teratas ini! Senarai ini menawarkan sesuatu untuk semua orang, dari peminat AI ke pemaju backend dan frontend yang berpengalaman. Pilih kegemaran anda dan menjimatkan masa mencari rel

Tutorial ini membimbing anda melalui membina saluran paip pemprosesan imej tanpa pelayan menggunakan perkhidmatan AWS. Kami akan membuat frontend next.js yang digunakan pada kluster ECS Fargate, berinteraksi dengan Gateway API, Fungsi Lambda, Bucket S3, dan DynamoDB. Th

Program perintis ini, kerjasama antara CNCF (Yayasan Pengkomputeran Native Cloud), pengkomputeran ampere, equinix metal, dan digerakkan, menyelaraskan ARM64 CI/CD untuk projek GitHub CNCF. Inisiatif ini menangani kebimbangan keselamatan dan prestasi lim

Pengimbas kelemahan rangkaian berasaskan GO ini dengan cekap mengenal pasti kelemahan keselamatan yang berpotensi. Ia memanfaatkan ciri konkurensi Go untuk kelajuan dan termasuk pengesanan perkhidmatan dan pemadanan kelemahan. Mari kita meneroka keupayaan dan etika


Alat AI Hot

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

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

Undress AI Tool
Gambar buka pakaian secara percuma

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

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma
