Làm cách nào để khởi tạo prefab thành tọa độ cụ thể?


7

Tôi có một prefab gọi là "đường". Làm thế nào tôi có thể khởi tạo nó (sử dụng C #) sao cho nó xuất hiện ban đầu tại tọa độ (5, 5, 5)?

Câu trả lời:


7

Nếu bạn đặt prefab vào một thư mục được gọi Resourcestrong Assetsthư mục của bạn , bạn sẽ có thể sử dụng Resourceslớp và loadchức năng của nó . Điều này sẽ tải một prefab lên như một GameObject, sau đó có thể được khởi tạo.

Ví dụ:

GameObject myRoadInstance = Instantiate(Resources.Load("road")) as GameObject;

Sẽ tạo một ví dụ về prefab "đường" của bạn trong thế giới trò chơi.

Bạn có thể đặt vị trí của nó bằng cách sửa đổi biến đổi của nó hoặc bạn có thể sử dụng phiên bản thay thế của Instantiateđể chỉ định vị trí.

GameObject myRoadInstance =
            Instantiate(Resources.Load("road"),
            new Vector3(5, 5, 5),
            Quaternion.identity) as GameObject;

1
Thực tiễn tốt nhất của Unity lưu ý rằng Tài nguyên nên tránh: unity3d.com/learn/tutorials/topics/best-practices/ ,. Tôi tin rằng trong trường hợp này, nên đặt Prefab đường làm tham số thành phần (nếu có thể).
Pedro Lopes

1

Các tay Unity chứa một ví dụ:

public class ExampleClass : MonoBehaviour {
    public Transform prefab;
    void Start() {
        for (int i = 0; i < 10; i++) {
            Instantiate(prefab, new Vector3(i * 2.0F, 0, 0), Quaternion.identity);
        }
    }
}

Lưu ý vector3 được truyền dưới dạng tham số thứ hai và bậc bốn là thứ ba.


0
Vector3 position = new Vector3(5, 5, 5);

GameObject newGameObject = Instantiate(GameObjectToInstantiate);

newGameObject.transform.position = position;

Bạn sẽ luôn cần biết những gì bạn sẽ khởi tạo, nhưng từ đó bạn chỉ cần gọi Instantiate là một hàm và tải nó vào một gameObject mới. Bạn phải định vị nó một cách riêng biệt.


Và tôi có cần đính kèm tập lệnh C # vào bất kỳ Đối tượng trò chơi nào không?
Gissipi_453

Tôi nhận được lỗi này - 'thống nhất điều bạn muốn khởi tạo là null.' Nó có nghĩa là gì ?
Gissipi_453

bạn nên có một var GameObject công khai và kéo prefab của bạn ở đó trong trình chỉnh sửa. Sau đó khởi tạo var đó
Leggy7

như Leggy đã nói, làm cho trình giữ chỗ ban đầu đó trở thành công khai và kéo theo tham chiếu trong sự thống nhất là cách dễ nhất để đưa nó đi. Sau này bạn có thể sử dụng lập trình để làm điều này an toàn hơn, nhưng bất kỳ công việc nào nữa có thể sẽ phản tác dụng cho mục đích của những gì bạn đang cố gắng làm.
Gnemlock
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.