Pengaturan Bersama
Termasuk bagian Arsitektur Game di Unity dalam perjalanan Unity di Coddy. Pelajaran 25 dari 64.
Pengaturan tingkat kesulitan mengubah semua musuh sekaligus, jadi pengaturan ini cocok disimpan dalam satu aset yang menjadi rujukan mereka semua. Setiap musuh membaca kecepatan dari aset setiap frame, dan tombol Hard di menu mengubah nilai pada 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 pada 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 pada 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 game berlangsung disimpan bergantung pada tempat game dijalankan. Build memuat aset seperti saat build dibuat setiap kali game dimulai, jadi pilihan Hard pemain akan hilang di game berikutnya. Untuk menyimpan pilihan, simpan dengan PlayerPrefs, lalu tulis kembali nilainya ke aset saat game dimulai. Di Editor, aset di proyekmu adalah aset yang diubah oleh game, dan perubahannya tetap ada setelah kamu menekan Stop, tidak seperti objek di scene yang kembali ke nilai Inspector-nya. Play berikutnya dimulai dengan Hard, dan aset tetap menyimpan nilai 4 sampai kamu mengubahnya kembali.
Tantangan
SedangBuat panah mengubah angin pada setiap perahu dengan berbagi satu aset.
- Di
Sailboat, gantiwindStrengthdenganpublic WindSettings wind;dan berlayarlah denganwind.strength. - Di
WindVane, gantistrengthdenganpublic WindSettings wind;. - Buat panah mengubah
wind.strength(0 hingga 5) dan teks menampilkannya, sepertiWind: 3.
Tekan tombol “Main” dan tekan panah Atas: ketiga perahu akan melaju lebih cepat. Lalu tekan tombol “Periksa”.
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;
}
}
Semua pelajaran di Arsitektur Game di Unity
1Komponen, Bukan Hierarki
Komponen KecilSkrip Dasar MusuhKomponen AbstrakKomponen yang Bekerja BersamaRangkuman: Turret ModularRangkuman: Meriam Kembar4Data yang Diserialisasi
Class yang Dapat DiserialisasiList di InspectorEnum di InspectorRangkuman: Tabel LootRangkuman: Acak Loot2Antarmuka di Unity
IDamageableAntarmuka dan TryGetComponentGetComponentsRingkasan: Tombol InteractRingkasan: Terdekat dalam Jangkauan5ScriptableObjects
Aset DataStatistik SenjataPengaturan BersamaSelamatkan AnginGelombang sebagai DataRekap: database ItemBeli dari Toko8Kode yang Dapat Digunakan Kembali
Extension methodSingleton GenerikHelper GenerikUlasan: FindNearestLatihan sendiri: Playground Unity