Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Problem with Coroutine

Discussion in 'Editor & General Support' started by DJVDJV, Aug 28, 2019.

  1. DJVDJV

    DJVDJV

    Joined:
    Sep 11, 2014
    Posts:
    70
    1) I have class with IEnumeratot Start()
    2) It calls terraindata with StartCoroutine(terrainData.GenerateData());
    3) GenerateData() goe executed to first yield return null;
    4) But after that Unity Freezes for endless loop
    5) I never hit line: string b = "B";


    Code (CSharp):
    1. IEnumerator Start()
    2. {
    3.  
    4.                 StartCoroutine(terrainData.GenerateData());
    5.                 do
    6.                 { yield return null;
    7.                 } while (!GameManager.instance.dataLoaded);
    8.   }

    and TerrainData-class have:

    Code (CSharp):
    1. public override IEnumerator GenerateData()
    2.     {
    3.         //Do something
    4.     string a = "A";
    5.  
    6.         /// yield return
    7.         yield return null;
    8.         /// yield return
    9.  
    10.     //Do something
    11.     string b = "B";
    12.     /// yield return
    13.         yield return null;
    14.         /// yield return
    15.  
    16.     //Do something
    17.     string c = "C";
    18.  
    19.     /// yield return
    20.         yield return null;
    21.         /// yield return
    22.  
    23.     //Do something
    24.  
    25. GameManager.instance.dataLoaded = true;
    26. }
     
    Last edited: Aug 29, 2019
  2. Joe-Censored

    Joe-Censored

    Joined:
    Mar 26, 2013
    Posts:
    11,847
    My guess is Unity is stuck in that while loop in Start. Just because you tell Start to return an IEnumerator doesn't mean Unity automatically calls it as a coroutine.

    Post code using CODE tags by the way.
     
  3. DJVDJV

    DJVDJV

    Joined:
    Sep 11, 2014
    Posts:
    70
    "Just because you tell Start to return an IEnumerator doesn't mean Unity automatically calls it as a coroutine."

    So I cannot call StartCoroutine at Start() or what u mean?
     
  4. Antypodish

    Antypodish

    Joined:
    Apr 29, 2014
    Posts:
    10,753
    Use Debug.Log to find issue.