MVC dalam Persatuan dengan Objek Skrip. Bagian 2

Kelanjutan dari serangkaian artikel dari Cem Ugur Karacam (bagian 1 dapat dibaca di sini ).

Kali ini kita akan mulai dengan membuat beberapa tampilan untuk menampilkan objek inventaris dan panel informasi untuk menampilkan parameter objek. Semacam inventori primitif. Kemudian kita akan fokus pada jendela inventaris, dan kita akan menyelesaikan jendela statistik di bagian selanjutnya.

gambar

Mari kita lihat apa pekerjaan kita nantinya. Kita harus:

  • membuat komponen visual untuk informasi tentang subjek dan inventaris;
  • membuat prefab item dalam inventaris;
  • isi inventaris dengan tampilan;
  • tampilkan informasi di konsol dengan mengklik pada tampilan item.

Ini banyak sekali. Pertama, sesuaikan resolusi layar.

gambar

Kami akan menggunakan objek Unity UI. Buat kanvas kosong (klik kanan di jendela hierarki → UI → Kanvas).

gambar

Selanjutnya, buat dua panel - informasi tentang item dan inventaris.
Kami juga membuat objek untuk latar belakang, menyebutnya BG dan menetapkan komponen Tata Letak Vertikal untuknya.

gambar

gambar

gambar

Sekarang latar belakang anak-anak akan disejajarkan secara vertikal.

Mari kita buat panel di dalam BG.

gambar

Dalam komponen RectTransform, kami hanya mengatur ketinggian panel - 300, dan membiarkan lebar otomatis, di bawah kendali komponen Tata Letak Vertikal. Berikut adalah pengaturan saya untuk objek BG:

gambar

gambar

Sekarang duplikat panel dan atur tingginya menjadi 440.

gambar

Lalu kami memberikan panel nama yang benar.

gambar

Seharusnya terlihat seperti ini:

gambar

Kisah bekerja pada objek InfoPanel akan berlanjut di bagian selanjutnya.

Mari kita siapkan tampilan untuk item inventaris dan simpan sebagai prefab. Buat tombol di dalam panel. Untuk mendapatkan tampilan item yang benar dalam inventaris, tambahkan komponen Grid Layout Group yang nyaman ke objek InventoryPanel.

gambar

Sekarang setiap objek anak dari panel inventaris akan ditempatkan di layar sesuai dengan pengaturan kisi di komponen Grid Layout Group. Ayo kembali ke tombol.

gambar

Tombol tidak berfungsi dengan benar karena kami belum mengonfigurasi kisi. Untuk saat ini, tambahkan objek Gambar ke tombol sebagai anak ikon item dan hapus bendera Target Raycast dari komponen Gambar sehingga mengklik gambar tidak menyebabkan tombol diklik.

gambar

Sekarang salin tombol beberapa kali. Empat salinan akan cukup untuk pelajaran ini. Begini tampilannya:

gambar

Sebelum melanjutkan, kita perlu membuat satu skrip untuk mewakili subjek. Dia akan bertanggung jawab untuk menyimpan informasi tentang item inventaris itu sendiri dan akan menanggapi acara mengklik tombol (untuk saat ini, kami akan membatasi diri untuk menampilkan konsol dengan perintah Debug.Log).

Buat skrip baru dan sebut itu ItemView.

gambar

ItemView bertanggung jawab untuk penyimpanan data, presentasi visual, pemrosesan klik dan keadaan awal sebelum memuat data.

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class ItemView : MonoBehaviour { public Button button; public Image ItemIcon; private ItemData itemData; } 

Buat metode untuk mengatur keadaan awal.

 using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class ItemView : MonoBehaviour { public Button button; public Image itemIcon; private ItemData itemData; public void InitItem(ItemData item) { this.itemData = item; button.onClick.AddListener(ButtonClicked); } private void ButtonClicked() { Debug.Log(itemData.name); } } 

Saya pikir untuk proyek kami, Anda akan memerlukan beberapa ikon. Saya menemukan kit gratis di Toko Aset. Mari kita tambahkan ke proyek.

gambar

Sekarang Anda bisa menambahkan variabel yang akan menyimpan ikon untuk item di dalam kelas ItemData.

 using UnityEngine; [CreateAssetMenu] public class ItemData : ScriptableObject { public string itemName; public ItemType type; public float attack; public Sprite icon; public float GetPrice() { return attack * 40; } } public enum ItemType { Dagger, Axe, Hammer, Potion } 

Sekarang di ItemView kita bisa menambahkan ikon ke tampilan.

 public void InitItem(ItemData item) { this.itemData = item; itemIcon.sprite = itemData.icon; button.onClick.AddListener(ButtonClicked); } 

Tambahkan skrip ke tombol dalam adegan dan ganti nama objek dengan tombol menjadi Item. Setelah itu, kami akan menetapkan objek ImageIcon di bidang ItemIcon.

gambar

Hapus tiga tombol yang tersisa, karena mereka diperlukan untuk mengkonfigurasi grid, dan menyimpan objek Item sebagai cetakan dengan menyeretnya ke jendela proyek.

gambar

Presentasi hampir selesai. Kami membutuhkan 4 item untuk mengisi inventaris. Kami akan membuat dan menetapkan ikon untuk model yang kami lakukan dalam pelajaran sebelumnya.

gambar

Selesai Sekarang buat skrip ItemViewController.

 using System.Collections; using System.Collections.Generic; using UnityEngine; public class ItemViewController : MonoBehaviour { public Inventory inventoryHolder; public Transform inventoryViewParent; public GameObject itemViewPrefab; private void Start() { foreach (var item in inventoryHolder.inventory) { var itemGO = GameObject.Instantiate(itemViewPrefab, inventoryViewParent); itemGO.GetComponent<ItemView>().InitItem(item); } } } 

Jadi, kami memiliki tautan ke inventaris yang menyimpan ItemData dibuat di folder proyek, tautan ke InventoryPanel untuk membuat tampilan sebagai anak-anak dari panel ini, dan tautan ke prefab yang berisi tampilan item itu sendiri.

Sekarang, dalam metode Mulai , buat instance presentasi item dan panggil metode InitItem untuk mengisi data presentasi dengan data dari model untuk setiap item inventaris.

Nah, akhirnya, buat objek kosong di TKP, lampirkan skrip controller ke situ dan tetapkan tautan ke objek yang diperlukan di TKP.

gambar

Pastikan semua item ditugaskan dalam inventaris.

gambar

Kami telah melakukan banyak hal. Sekarang mari kita lihat bagaimana semuanya bekerja.

gambar

Item dibuat, tetapi saya lupa menghapus objek Teks dari tombol. Di Unity, tombol dibuat secara default dengan teks. Buka prefab yang kami simpan di proyek dan hapus objek Teks. Kemudian simpan cetakan dan kembali ke tempat kejadian.

gambar

Sekarang tes lagi.

gambar

Selamat, semuanya berhasil.

Pada bagian selanjutnya kita akan membahas panel informasi.

Source: https://habr.com/ru/post/id478602/


All Articles