[過去ログ]
【3Dゲームエンジン】Unity質問スレッド16 [転載禁止]©2ch.net (1001レス)
【3Dゲームエンジン】Unity質問スレッド16 [転載禁止]©2ch.net http://peace.5ch.net/test/read.cgi/gamedev/1425192691/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
701: 名前は開発中のものです。 [sage] 2015/04/02(木) 20:08:44.81 ID:RyCFbYCi >>680 他の人が書いてる通り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; } http://peace.5ch.net/test/read.cgi/gamedev/1425192691/701
702: 名前は開発中のものです。 [sage] 2015/04/02(木) 20:50:35.21 ID:lKd9NqdZ >>701 これ書いてみた感じでは、boolで処理中かどうかを保持するよりは、enumで状態を持つ方が好みだわ。職場出てスマホからなんでID変わってるが気にするな。 public enum State{ BeforeProcess, Processing, AfterProcess } public State status = State.BeforeProcess; void Update() { switch(status){ case BeforeProcess: StartCoroutine ("LongLongProcess"); break; case Processing: //上記処理が終わるまでの挙動 break; case AfterProcess: //処理が実行された後の挙動 break; } //どの状態でも必ず行う挙動 ・・・ } private IEnumerator LongLongProcess(){ status = State.Processing; //Instantiateで複製したオブジェクトが生まれ、長い時間いろいろな処理をする //長い処理の途中で適宜yield return (何か):すること status = State.AfterProcess; } http://peace.5ch.net/test/read.cgi/gamedev/1425192691/702
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.031s