Menu
CoddyTech

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.

challenge icon

Tantangan

Sedang

Buat panah mengubah angin pada setiap perahu dengan berbagi satu aset.

  1. Di Sailboat, ganti windStrength dengan public WindSettings wind; dan berlayarlah dengan wind.strength.
  2. Di WindVane, ganti strength dengan public WindSettings wind;.
  3. Buat panah mengubah wind.strength (0 hingga 5) dan teks menampilkannya, seperti Wind: 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

Latihan sendiri: Playground Unity