Pengaturan Bersama
Termasuk bagian Arsitektur Game di Unity dalam perjalanan Unity di Coddy. Pelajaran 21 dari 50.
Pengaturan tingkat kesulitan mengubah semua musuh sekaligus, jadi pengaturan ini cocok disimpan dalam satu aset yang dirujuk oleh semuanya. Setiap musuh membaca kecepatan dari aset setiap frame, dan tombol Hard di menu menulis ke aset yang sama:
[CreateAssetMenu(menuName = "Game/Difficulty")]
public class Difficulty : ScriptableObject
{
public float enemySpeed = 2f;
}public class Enemy : MonoBehaviour
{
public Difficulty difficulty;
public Transform player;
void Update()
{
float step = difficulty.enemySpeed * Time.deltaTime;
transform.position = Vector3.MoveTowards(transform.position, player.position, step);
}
}// DifficultyMenu.cs, terhubung ke onClick tombol Hard
public Difficulty difficulty;
public void SetHard()
{
difficulty.enemySpeed = 4f;
}Field milik para musuh dan field milik menu menyimpan aset yang sama. Jadi, setelah SetHard(), Update berikutnya dari setiap musuh membaca nilai 4, termasuk musuh yang dibuat belakangan dari prefab dengan aset tersebut di field-nya. Ini berfungsi karena setiap musuh membaca difficulty.enemySpeed saat bergerak. Musuh yang menyalin nilainya ke field miliknya sendiri di Start akan terus bergerak dengan nilai 2.
Tempat perubahan yang dibuat selama permainan disimpan bergantung pada tempat game dijalankan. Build memuat aset seperti saat dibuat setiap kali dimulai, jadi pilihan Hard milik pemain hilang pada permainan berikutnya. Untuk menyimpan pilihan, simpan dengan PlayerPrefs, lalu tulis kembali ke aset saat game dimulai. Di Editor, aset dalam proyekmu adalah aset yang diubah oleh game, dan perubahan itu tetap ada setelah kamu menekan Stop, berbeda dengan object di scene, yang kembali ke nilai Inspector-nya. Play berikutnya dimulai pada Hard, dan aset tetap menyimpan nilai 4 sampai kamu mengubahnya kembali.
Tantangan
SedangTiga perahu layar melintasi teluk, didorong angin, dan tombol panah Atas dan Bawah menaikkan dan menurunkan kekuatan angin antara 0 dan 5. Namun, setiap perahu memiliki field windStrength sendiri, dan WindVane hanya mengubah strength miliknya sendiri, jadi tombol panah tidak mengubah apa pun di perairan. Gunakan satu asset bersama. WindSettings.cs sudah siap, dan asset Breeze milik proyek (strength 2) sudah diisikan ke field wind setiap perahu dan WindVane.
Sailboat: gantiwindStrengthdengan field publikwindbertipe WindSettings, lalu berlayarlah menggunakanwind.strength.WindVane: gantistrengthdengan field publikwind, lalu buat tombol panah mengubahwind.strength, agar semua perahu merasakannya. Teks menampilkan nilainya, sepertiWind: 3.- Build memuat asset Breeze yang baru setiap kali dimulai, sehingga angin yang dipilih pemain akan hilang. Simpan
wind.strengthdengan key PlayerPrefsWindsetiap kali nilainya berubah, lalu di Start masukkan nilai yang tersimpan kembali ke asset. Pemain baru tetap menggunakan nilai asset, yaitu 2.
Tekan Play, ubah angin, lalu tekan Stop dan Play lagi, kemudian tekan Check.
Coba sendiri
using UnityEngine;
using UnityEngine.InputSystem;
using TMPro;
public class WindVane : MonoBehaviour
{
public TMP_Text windText;
public float strength = 2f;
void Start()
{
Show();
}
void Update()
{
if (Keyboard.current.upArrowKey.wasPressedThisFrame)
{
strength = Mathf.Min(strength + 1f, 5f);
Show();
}
if (Keyboard.current.downArrowKey.wasPressedThisFrame)
{
strength = Mathf.Max(strength - 1f, 0f);
Show();
}
}
void Show()
{
windText.text = "Wind: " + strength;
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Arsitektur Game di Unity
1Komponen, Bukan Hierarki
Komponen KecilSkrip Dasar MusuhKomponen AbstrakKomponen yang Bekerja SamaRingkasan: Turret Modular5ScriptableObjects
Aset DataStatistik SenjataPengaturan BersamaGelombang sebagai DataUlasan: database Item8Kode yang Dapat Digunakan Kembali
Extension methodSingleton GenerikHelper GenerikUlasan: FindNearest