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)?

Gissipi_453
quelle

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;
MichaelHouse
quelle
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.

Draco18s vertraut SE nicht mehr
quelle
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.

Gnemlock
quelle
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