ich die Koroutine unten bin mit mehreren Objekten in einer Liste in meinem Spiel verschieben:wie kann ich aufhören Koroutine in Unity
IEnumerator moveObjToRight (Transform fromPosition, Vector3 toPosition, float duration, int newIndex) {
while (freePositions.Contains(objPositions[newIndex])) {
freePositions.Add (objPositions [newIndex - 1]);
filledPositions.Remove (objPositions [newIndex - 1]);
float counter = 0;
Transform startTrans = fromPosition;
freePositions.Remove (objPositions [newIndex]);
filledPositions.Add (objPositions [newIndex]);
while (counter < duration) {
counter += Time.deltaTime;
fromPosition.position = Vector3.Lerp (startTrans.position, toPosition, counter/duration);
yield return null;
}
if (newIndex < objPositions.Count) {
newIndex++;
if ((newIndex == 9) || !freePositions.Contains (objPositions [newIndex])) {
isMovingLeft = true;
yield return new WaitForSeconds (2.0f);
if (freePositions.Contains (objPositions [newIndex - 2])) {
toPosition = new Vector3(objPositions[newIndex - 2], startTrans.position.y, startTrans.position.z);
yield return StartCoroutine(moveObjToLeft(startTrans, toPosition, 1.0f, newIndex - 2));
ich es in der folgenden Art und Weise verwenden Anruf:
StartCoroutine(moveObjToRight(objs [objs.Count - 1].getObjGameObject().transform, new Vector3(objPositions[indexInObjPositions + 1], objPositionY, camera.nearClipPlane), 1.0f, indexInObjPositions + 1));
ich habe die folgende Fehlermeldung erhalten:
MissingReferenceException: The object of type 'Transform' has been destroyed but you are still trying to access it.
Your script should either check if it is null or you should not destroy the object.
UnityEngine.Transform.get_position()
in meinem Spiel, in der Koroutine auf die Linie zeigen:
toPosition = new Vector3(objPositions[newIndex - 2], startTrans.position.y, startTrans.position.z);
Ich glaube es ist, weil ich nicht die Koroutinen stoppe, wenn ich die Spielobjekte zerstöre. Wie kann ich die oben genannte Coroutine stoppen?