cari
RumahPeranti teknologiindustri ITMenyimpan dan Memuatkan Data Permainan Pemain dalam Perpaduan

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.

Saving and Loading Player Game Data in Unity

anda boleh menggunakan projek ini dari tutorial penjimatan silang silang sebelumnya untuk ujian.

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.
  1. bersiri ke fail yang diketahui pada cakera keras.

Memuatkan data:

    Cari fail simpan.
  1. deserialize kandungan ke dalam generik
  2. . object
  3. Cast
  4. ke jenis kelas data anda. object

Data untuk menyimpan:

    data sedia ada.
  • PlayerStatistics id adegan (integer).
  • kedudukan pemain (tiga terapung: x, y, z).
Penyediaan:

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
Logik Flowchart (PlayerControl Class):

Saving and Loading Player Game Data in Unity

Mata utama:

    mempunyai boolean awam () dan salinan data pemain yang disimpan.
  • GlobalObject IsSceneBeingLoaded 's untuk menentukan sama ada untuk memuatkan data yang disimpan.
  • PlayerControl Start() IsSceneBeingLoaded Kod:

1. Kelas:

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

'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() 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;
}

[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.

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!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Surat berita pemaju 21 teratas untuk melanggan pada tahun 2025Surat berita pemaju 21 teratas untuk melanggan pada tahun 2025Apr 24, 2025 am 08:28 AM

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

Paip pemprosesan imej tanpa pelayan dengan AWS ECS dan LambdaPaip pemprosesan imej tanpa pelayan dengan AWS ECS dan LambdaApr 18, 2025 am 08:28 AM

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

CNCF Arm64 Pilot: Impak dan WawasanCNCF Arm64 Pilot: Impak dan WawasanApr 15, 2025 am 08:27 AM

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

Membina pengimbas kelemahan rangkaian dengan pergiMembina pengimbas kelemahan rangkaian dengan pergiApr 01, 2025 am 08:27 AM

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

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

MantisBT

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

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SublimeText3 versi Inggeris

SublimeText3 versi Inggeris

Disyorkan: Versi Win, menyokong gesaan kod!

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma