【发布时间】:2017-03-20 15:08:49
【问题描述】:
我有多个脚本,例如:
- 项目数据库
- 库存
- 银河发电机
我每个都有 Start() 结束/或 Awake() 函数。如果我在这些函数中放置一个 Debug.Log() 我会得到类似的东西(有订单):
- 唤醒:ItemDatabase
- 醒着:银河发电机
- 开始:库存
- 开始:银河发电机
这个订单没问题。现在我在ItemDatabase 中添加了一个协程,用于从具有 WWW 类的数据库中获取项目,这就是我所拥有的:
void Awake(){
Debug.Log("Awake : ItemDatabase");
StartCoroutine(DoWWW());
}
private IEnumerator DoWWW()
{
Debug.Log("Before www");
www = new WWW("http://127.0.0.1:8000/api/items");
yield return www;
Debug.Log("After www");
itemData = JsonMapper.ToObject (www.text);
ConstructItemDatabase();
}
void ConstructItemDatabase()
{
Debug.Log("Construct ItemDatabase");
}
你可以看到不同的Debug.Log(),现在如果我检查我的控制台,我会看到这个顺序:
- 唤醒:ItemDatabase
- 在 www 之前
- 醒着:银河发电机
- 开始:库存
- 开始:银河发电机
- www 之后
- 构造项目数据库
我的问题是,为什么 Coroutine 的结尾毕竟是 Start() 函数?在我的示例中,我需要在Start : GalaxyGenerator 之前使用ConstructItemDatabase()。
有什么想法吗?
【问题讨论】: