Menu
CoddyTech

Bật và tắt bảng

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 9 trên 60.

Một bảng là một hình ảnh giao diện người dùng, thường được kéo giãn phủ toàn màn hình, với các nút và văn bản làm phần tử con. SetActive(false) trên bảng sẽ ẩn bảng cùng mọi thứ bên trong, và bạn không thể nhấp vào các nút khi bảng bị ẩn. Khi bảng hiển thị, hình ảnh của nó nhận các lần nhấp vốn dành cho mọi thứ bên dưới, vì vậy bạn không thể nhấn các nút phía sau bảng phủ toàn màn hình. Bản đồ này mở ra khi bạn nhấn một nút ở góc màn hình và đóng lại khi bạn nhấn một nút trên bản đồ:

public GameObject mapPanel;
public Button mapButton;
public Button closeButton;

void Start()
{
    mapPanel.SetActive(false);
    mapButton.onClick.AddListener(() => mapPanel.SetActive(true));
    closeButton.onClick.AddListener(() => mapPanel.SetActive(false));
}

Bảng dễ chỉnh sửa hơn khi đang hiển thị, vì vậy các cảnh thường được lưu khi bảng đang bật, rồi Start() sẽ ẩn chúng. Đừng đặt tập lệnh mở bảng ngay trên bảng đó: GameObject không hoạt động sẽ không chạy Start() hay Update(), nên tập lệnh trên một bảng được lưu khi đang ẩn sẽ không bao giờ kết nối các nút. Canvas hoặc một đối tượng quản lý trò chơi luôn hoạt động là nơi phù hợp để đặt tập lệnh. mapPanel.activeSelf cho biết bảng có đang bật hay không, vì vậy mapPanel.SetActive(!mapPanel.activeSelf) sẽ đảo trạng thái của bảng.

challenge icon

Thử thách

Dễ

Thêm menu cho trò chơi trên đồng cỏ: viết Start() trong Menu.cs.

  1. Ẩn menuPanel và helpPanel bằng SetActive(false).
  2. menuButton hiển thị menu và đặt mover.enabled = false; resumeButton ẩn menu và đặt mover.enabled = true.
  3. helpButton ẩn menu và hiển thị phần trợ giúp; backButton thực hiện ngược lại.

Nhấn Chơi rồi mở menu: người chơi không thể đi lại cho đến khi nhấn Tiếp tục. Sau đó nhấn Kiểm tra.

Tự làm thử

using UnityEngine;
using UnityEngine.UI;

public class Menu : MonoBehaviour
{
    public GameObject menuPanel;
    public GameObject helpPanel;
    public Button menuButton;
    public Button resumeButton;
    public Button helpButton;
    public Button backButton;
    public PlayerMover mover;

    void Start()
    {
        // Ẩn cả hai bảng, rồi kết nối các nút Menu, Resume, Help và Back
    }
}

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