- 756 名前:名前は開発中のものです。 mailto:sage [2015/04/02(木) 20:08:44.81 ID:RyCFbYCi.net]
- >>699
他の人が書いてる通りUpdate内に書かれた長い処理はたとえ何秒かかろうとその処理が終わるまで次のフレームに進まないためゲーム全体が止まる。 これを回避するためには別スレッド立てるかコルーチンで複数フレームにまたがった処理をするかだが、長い処理中にInstantiateするってことは別スレッドでは扱えない処理の可能性が高いのでコルーチン推奨かな。 以下サンプルコード。普段C#でしか書かないから適宜脳内変換してくれ private bool runningLongLongProcess; void Update() { if(!runningLongLongProcess && A_Obj == null && B_Obj == null) { StartCoroutine ("LongLongProcess"); }else if(runningLongLongProcess ){ //上記処理が終わるまでの挙動 ・・・ }else{ //処理が実行されていない時の挙動 ・・・ } //どの状態でも必ず行う挙動 ・・・ } private IEnumerator LongLongProcess(){ runningLongLongProcess = true; //Instantiateで複製したオブジェクトが生まれ、長い時間いろいろな処理をする //長い処理の途中で適宜yield return (何か):すること。 runningLongLongProcess = false; }
|

|