Ich habe etwa 6 Gameobjects mit Tag (Modell)
Finden sie alle und speichern sie in einem Array.
GameObject[] models = GameObject.FindGameObjectsWithTag("Model");
Verschieben, Skalieren, Drehen, wie kann ich sie zurückzusetzen Lage zu starten, wenn ich auf eine Schaltfläche klicken.
Erhalten die Position (Vector3
), Skalierung (Vector3
) und Rotation (Quaternion
) in der Start()
Funktion, mit einer for
Schleife und speichern ihre Werte temporäre Variablen. Wenn auf Button
geklickt wird, rufen Sie eine Funktion auf, die die Position, Skalierung und Drehung der Modelle auf diese Werte einstellt.
Um eine Funktion bei einem Klick auf die Schaltfläche aufzurufen, können Sie dies über den Editor oder über Skript tun. ButtonInstance.onClick.AddListener(() => yourFunctionToCall());
Ich bin ein Neuling Unity
Nichts hier kompliziert.
GameObject.FindGameObjectsWithTag
C# arrays.
GetComponent
Vector3
Quaternion
Unity Tutorials for beginners
Vector3[] defaultPos;
Vector3[] defaultScale;
Quaternion[] defaultRot;
Transform[] models;
//Attach Button from the Editor
public Button resetButton;
void Start()
{
//Call to back up the Transform before moving, scaling or rotating the GameObject
backUpTransform();
}
void backUpTransform()
{
//Find GameObjects with Model tag
GameObject[] tempModels = GameObject.FindGameObjectsWithTag("Model");
//Create pos, scale and rot, Transform array size based on sixe of Objects found
defaultPos = new Vector3[tempModels.Length];
defaultScale = new Vector3[tempModels.Length];
defaultRot = new Quaternion[tempModels.Length];
models = new Transform[tempModels.Length];
//Get original the pos, scale and rot of each Object on the transform
for (int i = 0; i < tempModels.Length; i++)
{
models[i] = tempModels[i].GetComponent<Transform>();
defaultPos[i] = models[i].position;
defaultScale[i] = models[i].localScale;
defaultRot[i] = models[i].rotation;
}
}
//Called when Button is clicked
void resetTransform()
{
//Restore the all the original pos, scale and rot of each GameOBject
for (int i = 0; i < models.Length; i++)
{
models[i].position = defaultPos[i];
models[i].localScale = defaultScale[i];
models[i].rotation = defaultRot[i];
}
}
void OnEnable()
{
//Register Button Events
resetButton.onClick.AddListener(() => resetTransform());
}
void OnDisable()
{
//Un-Register Button Events
resetButton.onClick.RemoveAllListeners();
}
Sorry für die Frage, aber haben Sie versucht, selbst? Speichern Sie ihre Position, Skalierung und Drehung, bevor Sie sie verschieben, und setzen Sie sie dann beim Klicken auf diese Werte zurück. – TheDjentleman
Ich bin ein Unity-Neuling, versuchte ein paar Wege, aber ich bekam immer Fehler. Ich werde versuchen, was Sie jetzt vorgeschlagen haben. Vielen Dank. – Zinox
** versuchte ein paar Möglichkeiten .. ** kannst du der Welt erzählen, was genau du probiert hast? –