Tạo một đối tượng dựa trên Prefab từ tập lệnh

Trang Cập Nhật :
Ngày tạo trang :

Môi trường xác minh

Windows
  • cửa sổ 11
Biên tập viên Unity
  • 2021.3.3F1
Gói hệ thống đầu vào
  • 1.3.0

Điều kiện tiên quyết cho mẹo này

Các cài đặt sau đây đã được thực hiện trước làm tiền đề cho mô tả về mẹo này.

Tạo một đối tượng dựa trên Prefab trong tập lệnh

Trong các Mẹo trước, chúng tôi đã đặt các đối tượng từ Prefab vào chế độ xem, nhưng trong trường hợp này, chúng tôi đặt một số đối tượng được xác định trước và khởi chạy trò chơi. Tuy nhiên, một số trò chơi có thể muốn thêm các đối tượng động trong khi trò chơi đang chạy. Trong trường hợp đó, bạn sẽ phải thêm nó từ nhà lắp ghép trong tập lệnh.

Tạo mẫu

Sau khi triển khai dự án mới, hãy đặt nút. Hãy thử tạo một đối tượng từ nhà lắp ghép mỗi khi chúng ta nhấp vào nút.

Tạo một prefab. Đây là thủ tục tương tự như các mẹo trước.

Tạo một tập lệnh để thêm đối tượng vào lần tiếp theo bạn nhấp vào nút. ButtonEvent Để tên là .

using UnityEngine;

public class ButtonEvent : MonoBehaviour
{
  [SerializeField] private GameObject SpritePrefab;

  public void OnClick()
  {
    // Instantiate にプレハブを渡すとそれをもとに新しいオブジェクトを生成する
    var obj = Instantiate(SpritePrefab);

    // 配置位置はランダムに
    obj.transform.localPosition = new Vector3(Random.value * 6 - 3, Random.value * 6 - 3);
  }
}

GameObject Xác định trường để bạn có thể đặt trước nhà lắp ghép nào sẽ được tạo dựa trên.

Instantiate Bạn có thể truyền một phương thức để tạo một GameObject đối tượng mới dựa trên đối tượng đó.

Vị trí của đối tượng được tạo trở thành nguồn gốc, và cho dù có bao nhiêu đối tượng được tạo ra, các đối tượng chồng chéo lên nhau và rất khó hiểu, vì vậy vị trí được đặt ngẫu nhiên sau khi tạo. Giá trị điều chỉnh vị trí là phù hợp vì nó là một mẫu.

Đính kèm tập lệnh vào EventSystem.

GameObject được thiết lập vì vậy thả prefab ở đây.

Khi nút được nhấp, phương thức được OnClick gọi.

Thực hiện mẫu

Sau khi tạo, hãy chạy trò chơi và nhấp vào nút. Mỗi nhấp chuột sẽ tạo ra một đối tượng.

Tất nhiên, vì nó được tạo dựa trên prefab, nếu giá trị của prefab thay đổi, đối tượng được tạo sẽ được tạo theo giá trị đó.