- 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