は、私のような複数のスクリプトを持っています。Unity:すべてのStart()関数の後にコルーチンが終了するのはなぜですか?</p> <ul> <li>がそれぞれに</li> <li>インベントリ</li> <li>GalaxyGenerator</li> </ul> <p>私はスタートを持って()終了/またはアウェイク()関数ItemDatabase:
- アウェイク:
- アウェイクをItemDatabase:GalaxyGenerator
- スタート:インベントリ
- スタート:GalaxyGenerator私は(順序を持っているために)私のような何かを得る、これらの機能にDEBUG.LOG()を置く場合
です。今、私は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()
を見ることができる、と私は私のコンソールをチェックすると、今、私はこの順序を参照してください。
- はアウェイク:GalaxyGenerator
- スタート:WWW
- 覚醒前
- をItemDatabaseインベントリ を
- スタート:WWW
- 構築物の後GalaxyGenerator
- が をItemDatabase
私の質問で、コルーチンの終わりはすべてStart()
機能した後、なぜ?私の例では、Start : GalaxyGenerator
の前にConstructItemDatabase()
にする必要があります。
アイデア?
ありがとうございました。だからInit.csのようなスクリプトが最初に呼ばれ、すべてのコルーチンがここにあり、すべてのInitialize()関数が他のすべてのスクリプトに必要です。だからこれで私はStartとAwakeの機能を止める...問題じゃない? –
私はあなたが何を意味しているのか分かりません。あなたが私の答えを理解し、あなたの提案がうまくいくと思うなら、試してみてください。 – Maakep