- Home /
 
[ Coroutine: Move Next ] CPU usage
I'm trying to optimize my game viewing all CPU usage in the Profiler (with Deep Profile) and I discovered an odd thing: if I don't move my character FPS are greater than 100, but if I move it the FPS drop down to almost 70, and furthermore if I stop to move my character the FPS encrease to 100 again. I watched Profiler during FPS drop and I noticed this: 
As you see, Update.ScriptRunDelayedDynamicFrameRate is the cause of this FPS drop (it appears only when I move my character), and I know that it refers to Coroutines. I have highlighted the AI_GenericMonster.LoadGlob() [Coroutine:MoveNext] record because I think (but I don't know) that somehow that script ruin the FPS stability. Here the part of script:
 IEnumerator LoadGlob ()
     {
         while (glob == null) 
         {
             glob = GameObject.Find ("GlobalParameters");
         }
         while (globScript == null) 
         {
             globScript = glob.GetComponent <Global_Entities> ();
         }
         while (startScene == null) 
         {
             startScene = GameObject.Find ("Start Scene");
         }
         while (startScript == null) 
         {
             startScript = startScene.GetComponent<Start_Scene> ();
         }
 
         if (enemyState == "Enabled") {
             SetEnable ();
         } else if (enemyState == "Disabled") {
             SetDisable ();
         }
 
         while (startScript.readyToStart == false) {
             yield return null;
         }
         loaded = true;
 
         while (destPoints == null) {
             while (destPoints.Length == 0) {
                 yield return null;
             }
         }
 
         destPoint = Random.Range (0, destPoints.Length);
         GotoNextPoint (destPoints);
 
         while (destPointsAlert == null) {
             while (destPointsAlert.Length == 0) {
                 yield return null;
             }
         }
 
         destPointAlert = Random.Range (0, destPointsAlert.Length);
         GotoNextPointAlert (destPointsAlert);
 
         StopCoroutine (loadRoutine);
     }
 
               This IEnumerator is called only on Start() so I don't understand why there is so much CPU usage for this. Please help me because I can't solve this alone.
Furthermore, I noticed that more monster there are in the scene (every monster has one of these scripts) and higher is the CPU usage of AI_Generic$$anonymous$$onster.LoadGlob() [Coroutine:$$anonymous$$oveNext] record, but that coroutine is called ONLY on Start(), and seems there are not garbage (only yield return null). Please help me!
Your answer
 
             Follow this Question
Related Questions
What am I doing wrong with IEnumerator? 1 Answer
fps calculation with while loop in coroutine 2 Answers
Coroutoutine doesnt work properly. 3 Answers