Wie instanziiere ich ein Fertighaus auf eine bestimmte Koordinate?


7

Ich habe ein Fertighaus namens "Straße". Wie kann ich es instanziieren (mit C #), sodass es zunächst an den Koordinaten angezeigt wird (5, 5, 5)?

Antworten:


7

Wenn Sie das Fertighaus in einem Verzeichnis ablegen, das in ResourcesIhrem Verzeichnis aufgerufen wird Assets, können Sie die ResourcesKlasse und ihre loadFunktionalität verwenden. Dadurch wird ein Fertighaus als geladenGameObject , das dann instanziiert werden kann.

Zum Beispiel:

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

Erstellt eine Instanz Ihres "Road" -Profils in der Spielwelt.

Sie können entweder die Position festlegen, indem Sie die Transformation ändern, oder Sie können die alternative Version von verwenden Instantiate, um eine Position anzugeben.

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

1
In den Best Practices von Unity wird darauf hingewiesen, dass Ressourcen vermieden werden sollten: entity3d.com/learn/tutorials/topics/best-practices/… . Ich glaube, dass es in diesem Fall vorzuziehen wäre, das Straßenfertigteil als Komponentenparameter zu platzieren (wenn möglich).
Pedro Lopes

1

Das Unity-Handbuch enthält ein Beispiel:

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);
        }
    }
}

Beachten Sie, dass der Vektor3 als zweiter Parameter und die Quaternion als dritter Parameter übergeben wurden.


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

GameObject newGameObject = Instantiate(GameObjectToInstantiate);

newGameObject.transform.position = position;

Sie müssen immer wissen, was Sie instanziieren werden, aber von dort aus rufen Sie einfach Instantiate als Funktion auf und laden es in ein neues gameObject. Sie müssen es separat positionieren.


Und muss ich das C # -Skript an ein Spielobjekt anhängen?
Gissipi_453

Ich bekomme diesen Fehler - "Einheit, das, was Sie instanziieren möchten, ist null." Was bedeutet das ?
Gissipi_453

Sie sollten ein öffentliches var GameObject haben und Ihr Fertighaus dort in den Editor ziehen. Dann
instanziieren Sie

Wie Leggy sagte, ist es am einfachsten, diesen anfänglichen Platzhalter öffentlich zu machen und die Referenz in Einheit zu ziehen. Später können Sie die Programmierung verwenden, um dies sicherer zu machen, aber jede weitere Arbeit ist wahrscheinlich kontraproduktiv für den Zweck, den Sie versuchen zu tun.
Gnemlock
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.