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<em>.transform.position.x+"&posY="+obstacles<em>.transform.position.y+"&posZ="+obstacles<em>.transform.position.z+"&rotX="+obstacles<em>.transform.rotation.x+"&rotY="+obstacles_.transform.rotation.y+"&rotZ="+obstacles*.transform.rotation.z);*_</em></em></em></em>

* } *

* 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;*
* }*
* }*

}

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.

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));
   }
}