Menu
CoddyTech

Tìm theo tên

Thuộc phần Những kiến thức cơ bản về lập trình trong Unity trong hành trình Unity của Coddy. Bài học 56 trên 85.

GameObject.Find("Player") tìm trong cảnh một đối tượng đang hoạt động có tên khớp chính xác và trả về đối tượng đó, hoặc trả về null nếu không có. Cách này giúp bạn không phải gán một trường trong Inspector, nhưng phải đánh đổi: nó tìm qua mọi đối tượng trong cảnh. Vì vậy, hãy gọi hàm này một lần trong Start() và lưu kết quả vào một trường. Camera an ninh này tìm Player khi trò chơi bắt đầu và theo dõi đối tượng đó ở mỗi khung hình:

private Transform player;

void Start()
{
    player = GameObject.Find("Player").transform;
}

void Update()
{
    transform.LookAt(player);
}

Tên phải khớp chính xác, bao gồm chữ hoa và dấu cách: "player" hoặc "Player " sẽ không tìm thấy gì. Find cũng bỏ qua các đối tượng không hoạt động (bị ẩn). Nếu tìm kiếm thất bại, hàm sẽ âm thầm trả về null, còn lỗi chỉ xuất hiện ở dòng tiếp theo sử dụng kết quả: trong trường hợp này, .transform gây ra NullReferenceException. Đường dẫn như "Car/Wheel" sẽ tìm Wheel, là đối tượng con của Car.

challenge icon

Thử thách

Trung bình

Xe tự hành báo khoảng cách đến mục tiêu.

  1. Trong Start(), đặt goal = GameObject.Find("Goal").transform;.
  2. Trong Update(), khi Input.GetKeyDown(KeyCode.Space), ghi nhật ký "Distance to goal: " + Vector3.Distance(transform.position, goal.position).

Nhấn Chơi rồi nhấn Space: Console hiển thị Distance to goal: 5. Sau đó nhấn Kiểm tra.

Tự làm thử

using UnityEngine;

public class Beacon : MonoBehaviour
{
    private Transform goal;

    void Start()
    {
        // Tìm đối tượng có tên Goal và lưu Transform của nó vào goal.
    }

    void Update()
    {
        // Space: ghi khoảng cách đến mục tiêu vào nhật ký.
    }
}

Tất cả bài học trong Những kiến thức cơ bản về lập trình trong Unity

Tự luyện tập: Playground Unity