- Home /
Is there anything like "StartCoroutine", but for a non MonoBehaviour?
I'm creating a row in a database, and I need to wait for its response to proceed. I was using StartCoroutine in the Login script, but its a MonoBehaviour. How can I replace it?
Here is my code:
 using UnityEngine;
 using System.Collections;
 using System;
 
 public class ServerData : IFacade {
     private GameObject[] obstacles;
     int levelID;
     
     public delegate void Delegado(string resultado);
     int userID;
     
     public ServerData (int user){
         userID = user;
     }
     
     public void SaveObstacles(Level l){
         
         obstacles = l.obstaclesList.ToArray();
         
         StartCoroutine(CreateLevel(SetLevelID));
         
         for (int i = 0; i < obstacles.Length; i++) {
             
             
             var www = new WWW("http://localhost/LevelDB/login.php?level_ID="+levelID+"&posX="+obstacles[i].transform.position.x+"&posY="+obstacles[i].transform.position.y+"&posZ="+obstacles[i].transform.position.z+"&rotX="+obstacles[i].transform.rotation.x+"&rotY="+obstacles[i].transform.rotation.y+"&rotZ="+obstacles[i].transform.rotation.z);
 
             
         }    
         
         
         Debug.Log("Level saved externally");
     }
         
     public Level LoadObstacles(){
         
         Debug.Log("Level loaded externally");
         return null;
     }
     
     
     private IEnumerator CreateLevel(Delegado del){
         var www = new WWW("http://localhost/LevelDB/addLevel.php?user_ID=");    
         yield return www;
         del(www.text);
     }
     
     private void SetLevelID(string text){
         int ID = Convert.ToInt32(text);
         if(ID > 0){
             levelID = ID;
         }
     }
     
 }
 
 
Answer by SinisterRainbow · Jun 14, 2013 at 04:37 AM
I'm pretty sure you can still use StartCoroutine(foo()), but only in Unity can you use 'yield return new WaitForSeconds(x)' -- you would have to call it every frame: 'yield return null'. It's a C# feature from IEnumerable as far as I understand.
As far as game design, I find it's easier to use MonoBehaviour on just about everything and just attach a lot of files to an empty gameobject in the scene.
Answer by sotirosn · Jun 14, 2013 at 05:04 AM
Get any MonoBehaviour to run it, just make sure it is and stays enabled and active.
 class AnyClass : MonoBehaviour {
    void IEnumerator Start() {
        ServerData data = GetServerData();
        yield return StartCoroutine(data.CreateLevel(del));
    }
 }
Your answer
 
 
             Follow this Question
Related Questions
what database should i use 3 Answers
problem updating info to data base 0 Answers
Saving Data (closed) 1 Answer
Update android game with new levels without replacing database 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                