トップページ > ゲ製作技術 > 2017年12月14日 > On7lkIBu

書き込み順位&時間帯一覧

1 位/99 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000202300029



使用した名前一覧書き込んだスレッド一覧
名前は開発中のものです。
【3Dゲームエンジン】Unity総合スレッド31 [無断転載禁止]©2ch.net

書き込みレス一覧

【3Dゲームエンジン】Unity総合スレッド31 [無断転載禁止]©2ch.net
595 :名前は開発中のものです。[sage]:2017/12/14(木) 16:33:17.08 ID:On7lkIBu
>>591
元々Unityは初心者用ゲーム制作ツールじゃないよ
>これじゃプログラマー用の補助ソフトじゃねえか
まさにその指摘通りの代物だよ最初から
【3Dゲームエンジン】Unity総合スレッド31 [無断転載禁止]©2ch.net
597 :名前は開発中のものです。[sage]:2017/12/14(木) 16:45:41.85 ID:On7lkIBu
話しをぶった切るが
色々細かい事気にせず作れるようになってて優秀な開発環境だなと思い
他の環境だと繊細に気を遣わないといけなような事も気にせず3ヶ月ガンガン進めて来ていたが
ついにイベントサイクルの関係で、実行してくれない物が出てきたわ

@→A→B、という流れになるようにコード書いてるのに
実際は@→B→A、みたいになり期待した結果にならない感じ

具体的には
「親Object(AScript)→子Object(BScript)→孫Object(CScript)」という構成のプレハブを
リソースからInstantiateしたと同時に、親Object(AScript)から孫Object(CScript)のpublic関数を呼び出し
その関数内で孫に対する色々な初期化やってるんだが
Visible類の初期化がうまくいかないわ

おそらくコード上のInstantiateを実行した段階では、実際にまだフィールドにはPrefabが生成されていなくて
先に親Object(AScript)から孫Object(CScript)のpublic関数の処理が、生成されていないPrefabのvisible系に対し
実行されてるから変化しないんだと憶測している。


やっぱりこの手のタイミング部分はUnity信用しきってやらず
今まで通り気を遣ってプログラミングするべきだったのね・・・( ^ω^)
大きくやり方変えないといけなくなったチクショウ!・・・orz
【3Dゲームエンジン】Unity総合スレッド31 [無断転載禁止]©2ch.net
607 :名前は開発中のものです。[sage]:2017/12/14(木) 18:28:35.77 ID:On7lkIBu
確かに金は全て解決してくれる魔法力
【3Dゲームエンジン】Unity総合スレッド31 [無断転載禁止]©2ch.net
610 :名前は開発中のものです。[sage]:2017/12/14(木) 18:50:27.75 ID:On7lkIBu
「金だけ」では当然ダメだよw
特に今は開発と同じくらい宣伝の方にも金まわさないとさ
このゲームもTVCM出しまくってれば運命は変わってたかもよ
【3Dゲームエンジン】Unity総合スレッド31 [無断転載禁止]©2ch.net
612 :名前は開発中のものです。[sage]:2017/12/14(木) 19:06:34.50 ID:On7lkIBu
うみょー直った
初心に帰り単純な方法思いついて試したら直った
今回また1つ学べたわ
Instantiate()で生成した物を、直後にGameObject.Find()で見つけ出そうする処理は気を付けた方がいい
staticではないpublicなりグローバルなりに参照格納してそっちから扱った方がトラブルなくてよさげ
【3Dゲームエンジン】Unity総合スレッド31 [無断転載禁止]©2ch.net
615 :名前は開発中のものです。[sage]:2017/12/14(木) 19:09:32.05 ID:On7lkIBu
というような事がちらほらあるから
全くの初心者には無理でしょうというお話し
色々経験していないと原因追及と回避できるわけがない
【3Dゲームエンジン】Unity総合スレッド31 [無断転載禁止]©2ch.net
616 :名前は開発中のものです。[sage]:2017/12/14(木) 19:13:48.60 ID:On7lkIBu
>>614
そういう方向性も考えてはいたが今後トラブッた時にさらに複雑になりそうなので採用せんかった
シンプルに直して先を急ぎたかった
【3Dゲームエンジン】Unity総合スレッド31 [無断転載禁止]©2ch.net
625 :名前は開発中のものです。[sage]:2017/12/14(木) 23:45:13.38 ID:On7lkIBu
>>618
原因わかった今ならすっきりだが検証中は原因究明に本当に苦戦したよ
簡単にまとめると次のような処理

void func(){
@
 for(〜){
  Destoryでステージ上の全落ちてるアイテムを一旦削除
 }
A
 for(〜){
  Instantiateで新しいアイテムをフィールドにばら撒く
 }
B
 for(〜){
  新しくばら撒いたアイテムの中にあるスクリプトをGameObject.Findで呼び出しながら
 アイテムを初期化していく
 }
}

この処理がうまく機能していなかった。
原因は
・@のDestoryはvoid func(){}が終了しないと実際にゲームオブジェクトは削除されていない。
・AのInstantiateも@と同じくこの時点で完了していないようだった
・結果Bでの検索はAで生成されたものではなく@で削除予定だったものが参照されていた

これで新しいアイテムは全部正しく初期化されてなかった。
ゲームオブジェクト名でアイテムを識別して
GameObject.Findの検索に使ってるという不幸も重なってのバグ
【3Dゲームエンジン】Unity総合スレッド31 [無断転載禁止]©2ch.net
627 :名前は開発中のものです。[sage]:2017/12/14(木) 23:49:50.26 ID:On7lkIBu
上の処理は
@→A→B
の予定で動くはずなのに
実際には
B→@→A
みたいに動くわけよ

次からは気を付けるぞーっと


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。