Unity WaitForseconds, бросающие StackOverFlowerRorC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Unity WaitForseconds, бросающие StackOverFlowerRor

Сообщение Anonymous »

Я пытаюсь просто переключиться на другую камеру в течение 3 секунд, когда E нажимает, когда сосредоточен на моей двери. Пожалуйста, помощь. < /P>
код: < /p>
using System.Collections;
using UnityEngine;

public class DoorHandler1 : UnlockedDoor
{

[SerializeField] GameObject player;
[SerializeField] GameObject doorCam;

public override void OpenDoor()
{
StartCoroutine(openingDoor());
}

public override void CloseDoor()
{
//
}

private IEnumerator openingDoor()
{
player.SetActive(false);
doorCam.SetActive(true);
yield return new WaitForSeconds(3f);
player.SetActive(true);
doorCam.SetActive(false);
}
}

Функция opendoor () вызывается из другого скрипта Doorhandlerbase
DoorHandlerBase.cs:
using UnityEngine;

public class DoorHandlerBase : MonoBehaviour, DetectionHandler, DoorHandler
{
[SerializeField] bool canOpen;
[SerializeField] bool canClose;
[SerializeField] bool isOpen;
[SerializeField] KeyCode openKey = KeyCode.E;
private DoorHandler[] doorHandlers;
private bool operationInProgress = false;

void Start()
{
doorHandlers = gameObject.GetComponents();
if (doorHandlers.Length == 0)
{
Debug.LogError("DoorHandler component not found on " + name);
Debug.LogWarning("EmptyDoorHandler Added by Default.");
doorHandlers = new DoorHandler[] { new EmptyDoorHandler() };
}
}

public void DetectionStart()
{
if (!isOpen)
{
canOpen = true;
canClose = true;
}
else
{
canOpen = false;
canClose = false;
}
}

public void DetectionEnd()
{
canOpen = false;
canClose = false;
}

void Update()
{
if (!operationInProgress && Input.GetKeyDown(openKey)) {
if ((!isOpen && canOpen)||(isOpen && canClose))
{
operationInProgress = true; // Set operation in progress
if (canOpen) OpenDoor();
else if (canClose) CloseDoor();
operationInProgress = false; // Reset operation in progress after opening

}
}
}

public void OpenDoor()
{
if (canOpen)
{
isOpen = true;
foreach (DoorHandler dh in doorHandlers) dh.OpenDoor();
// Additional logic for opening the door, e.g., animations, sound effects
Debug.Log("Door opened. : " + name);
}
}

public void CloseDoor()
{
if (canClose)
{
isOpen = false;
foreach (DoorHandler dh in doorHandlers) dh.CloseDoor();
// Additional logic for closing the door, e.g., animations, sound effects
Debug.Log("Door closed. : " + name);
}
}

}

class EmptyDoorHandler : DoorHandler
{
public void OpenDoor() { }
public void CloseDoor() { }
}
< /code>
Ошибка: < /p>
StackOverflowException: The requested operation caused a stack overflow.
DoorHandler1+d__5.MoveNext () (at Assets/Scripts/Objects/Doors/Handlers/DoorHandler1.cs:24)
UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) (at :0)
UnityEngine.MonoBehaviour.StartCoroutineManaged2 (System.Collections.IEnumerator enumerator) (at :0)
UnityEngine.MonoBehaviour.StartCoroutine (System.Collections.IEnumerator routine) (at :0)
DoorHandler1.OpenDoor () (at Assets/Scripts/Objects/Doors/Handlers/DoorHandler1.cs:12)
DoorHandlerBase.OpenDoor () (at Assets/Scripts/Objects/Doors/DoorHandlerBase.cs:62)
DoorHandlerBase.OpenDoor () (at Assets/Scripts/Objects/Doors/DoorHandlerBase.cs:62)
DoorHandlerBase.OpenDoor () (at Assets/Scripts/Objects/Doors/DoorHandlerBase.cs:62)
DoorHandlerBase.OpenDoor () (at Assets/Scripts/Objects/Doors/DoorHandlerBase.cs:62)
DoorHandlerBase.OpenDoor () (at Assets/Scripts/Objects/Doors/DoorHandlerBase.cs:62)
DoorHandlerBase.OpenDoor () (at Assets/Scripts/Objects/Doors/DoorHandlerBase.cs:62)
DoorHandlerBase.OpenDoor () (at Assets/Scripts/Objects/Doors/DoorHandlerBase.cs:62)
DoorHandlerBase.OpenDoor () (at Assets/Scripts/Objects/Doors/DoorHandlerBase.cs:62)
DoorHandlerBase.OpenDoor () (at Assets/Scripts/Objects/Doors/DoorHandlerBase.cs:62)
...


Подробнее здесь: https://stackoverflow.com/questions/796 ... rflowerror
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Unity WaitForseconds бросает StackOverFlowerRor [закрыто]
    Anonymous » » в форуме C#
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Как сообщить об ошибке StackOverflowError, не вызывая другую ошибку StackOverflowError?
    Гость » » в форуме JAVA
    0 Ответы
    43 Просмотры
    Последнее сообщение Гость
  • Apache CXF Framework неправильно обрабатывает поставщики, вызывая функции, бросающие веб -serviceException
    Anonymous » » в форуме Apache
    0 Ответы
    80 Просмотры
    Последнее сообщение Anonymous
  • PDFBox v3.0.0 StackOverflowError при разделении PDF-файла
    Anonymous » » в форуме JAVA
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Исключение в потоке «основной» java.lang.StackOverflowError. Пожалуйста, помогите мне в этом [закрыто]
    Anonymous » » в форуме JAVA
    0 Ответы
    93 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»