Menu
CoddyTech

Kết nối trong Inspector

Thuộc phần Xây dựng trò chơi thực tế trong hành trình Unity của Coddy. Bài học 8 trên 60.

Bạn cũng có thể kết nối nút trong cửa sổ Inspector mà không cần dùng AddListener. Danh sách On Click () của nút Button ban đầu trống. Nhấn dấu + để thêm một hàng, kéo đối tượng chứa tập lệnh vào ô đối tượng của hàng đó, rồi danh sách thả xuống của hàm sẽ hiển thị các thành phần của đối tượng cùng với những phương thức công khai của chúng. Chọn Jukebox > NextTrack, mỗi lần nhấp sẽ gọi phương thức này:

public class Jukebox : MonoBehaviour
{
    public string[] tracks;
    private int current;

    public void NextTrack()
    {
        current = (current + 1) % tracks.Length;
        Debug.Log("Now playing: " + tracks[current]);
    }
}

Danh sách thả xuống hiển thị các phương thức có public, trả về void và không nhận tham số hoặc nhận một tham số thuộc kiểu int, float, string, bool hoặc Object. Bạn đặt giá trị của tham số trong hàng đó. Phương thức NextTrack có phạm vi private sẽ không xuất hiện trong danh sách nên bạn không thể chọn. Hàng đó lưu phương thức theo tên của nó: nếu đổi tên NextTrack thành SkipTrack, hàng sẽ hiển thị <Missing Jukebox.NextTrack> và nút sẽ không làm gì khi được nhấp, đồng thời Console cũng không báo lỗi.

Các hàng trong Inspector phù hợp với những nút đặt trong cảnh: bất kỳ ai trong nhóm cũng có thể xem và thay đổi chức năng được gọi khi nhấn nút mà không cần mở tập lệnh. AddListener trong code phù hợp với các nút được tạo khi trò chơi đang chạy và những lệnh gọi truyền giá trị từ một biến; trình biên dịch sẽ phát hiện nếu bạn đổi tên phương thức. Các listener được thêm từ code không bao giờ xuất hiện trong danh sách On Click (), vì vậy nút được kết nối theo cả hai cách sẽ gọi cả hai.

challenge icon

Thử thách

Dễ

Làm cho ba nút của cầu nâng hoạt động trong Drawbridge.cs.

  1. Mỗi hàng On Click () của nút gọi Raise, Lower hoặc ToggleLamp. Đổi tên LowerBridge thành Lower.
  2. Viết public void Raise(): bridge.localRotation xoay 70 độ quanh trục x, và statusText hiển thị Bridge: up.
  3. Viết public void ToggleLamp(): hàm bật warningLamp khi đèn đang tắt và tắt đèn khi đang bật.

Nhấn Play: mỗi nút đều thực hiện đúng chức năng. Sau đó nhấn Check.

Tự làm thử

using UnityEngine;
using TMPro;

public class Drawbridge : MonoBehaviour
{
    public Transform bridge;
    public TMP_Text statusText;
    public GameObject warningLamp;

    public void LowerBridge()
    {
        bridge.localRotation = Quaternion.Euler(0f, 0f, 0f);
        statusText.text = "Bridge: down";
    }
}

Tất cả bài học trong Xây dựng trò chơi thực tế

Tự luyện tập: Playground Unity