[過去ログ] 【3Dゲームエンジン】Unity質問スレッド16 [転載禁止]©2ch.net (1001レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
680
(4): 2015/04/01(水)22:28 ID:UibL5Yne(1) AAS
function Update() 内の処理で、下記のように何もしない時(アイドル状態)にしたいときの書き方ってどのように書いとけばよいのでしょうか?

・・・
if(A_Obj == null && B_Obj == null)
{

Instantiateで複製したオブジェクトが生まれ、長い時間いろいろな処理をする

}
else
省6
682: 2015/04/01(水)23:06 ID:3WfGzdTV(2/2) AAS
>>680
何がしたいのかわからん。
最後にa bにnullセットしたら
ずっとはじめのifに引っかかって、
インスタンス作り続けるじゃん
683: 2015/04/02(木)00:18 ID:Nej5s9c5(1) AAS
>>679
そこまで実装できる人ならエラーメッセージの読み方を覚えると捗るよ

>>680
Update関数は1秒間に数十回呼ばれるので長い処理を書いちゃダメ
どうすればいいかは長い処理の内容による
685: 2015/04/02(木)02:04 ID:Kd4ACYgu(1) AAS
>>680
長い時間処理をするって書いてるけど、
行が長い、処理が多いからってフレームが進むわけじゃない。

最後のnullにするところは謎だからとりあえず無視すると、
1フレーム目→色々な処理をする
2フレーム目→何もしない
3フレーム目以降→何もしない
省2
701
(1): 2015/04/02(木)20:08 ID:RyCFbYCi(1) AAS
>>680
他の人が書いてる通りUpdate内に書かれた長い処理はたとえ何秒かかろうとその処理が終わるまで次のフレームに進まないためゲーム全体が止まる。
これを回避するためには別スレッド立てるかコルーチンで複数フレームにまたがった処理をするかだが、長い処理中にInstantiateするってことは別スレッドでは扱えない処理の可能性が高いのでコルーチン推奨かな。
以下サンプルコード。普段C#でしか書かないから適宜脳内変換してくれ

private bool runningLongLongProcess;

void Update() {
if(!runningLongLongProcess && A_Obj == null && B_Obj == null)
省18
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.028s