Saya mengalami masalah dalam mencoba menerapkan sistem inventaris dalam XNA (tidak terlalu penting, bisa menjadi platform apa pun) tetapi sejauh ini. Ini adalah masalah yang saya coba utarakan:
Bagaimana saya bisa mendapatkan item dari dunia (pikirkan ketika Anda membunuh monster yang menjatuhkan armor) dan memasukkannya ke inventaris pemain saya?
Jika inventaris hanya daftar item, secara teknis, bagaimana saya bisa memasukkan Steel Sword dari dunia ke dalam inventaris pemain saya tanpa ada kelas yang melakukan lebih dari satu hal?
Saat ini saya memiliki struct item, yang berisi nilai hex unik, jumlah berapa item yang ada (untuk stackable, seperti panah) dan Tekstur untuk rendering dalam inventaris, dan beberapa properti tidak penting lainnya (nama, deskripsi, dll) .
Ini akan menjadi desain yang buruk jika saya harus memodifikasi kelas item saya yang ada untuk menampung posisi dunia, bersama dengan deteksi tabrakan (tidak ingin item jatuh melalui bumi).
Terima kasih atas pertimbangannya!
WorldItem
yang terpisah dari milik AndaInventoryItem
? (MungkinWorldItem
memilikiInventoryItem
templat yang dimasukkan ke dalam inventaris pemain saat diambil).Inventory
yang membutuhkanWorldItem
dan menambahkannya sebagaiInventoryItem
. Sehingga bisa juga menangani case di mana item perlu ditumpuk (mis. Panah).Jawaban:
Pendekatan yang saya gunakan adalah memiliki 2 struct (atau kelas) yang berbeda.
WorldItem
danInventoryItem
.Anda kemudian dapat menambahkan
InventoryItem
sebagai properti / bidang milik AndaWorldItem
yang akan ditempatkan di inventaris pemain saat item dunia diambil.Anda ingin metode di suatu tempat (pada kelas pemain, atau salah satu kelas item) yang menangani menambahkan item inventaris ke inventaris pemain, untuk menangani penumpukan item seperti.
sumber
Seperti yang disebutkan sebelum membagi menjadi beberapa kelas atau array akan menjadi taruhan terbaik Anda. Saya akan membuat 3 kelas, Dunia, Pemain dan Item Kelas dunia akan memiliki Daftar WorldItems di dalamnya, begitu juga kelas Player, tetapi bernama Daftar Inventaris Ketika pemain mengambil item, Anda memindahkannya dari daftar di Dunia kelas ke daftar di kelas Player.
Dalam loop pengundian gim Anda, Anda bisa membuat lingkaran yang menarik semua Item di daftar WorldItems ke layar, tetapi tentu saja mengabaikan daftar Inventaris pada objek pemain.
sumber