Unity初心者の俺が調べたことをメモするスレ (99レス)
上下前次1-新
87: 名前は開発中のものです。 [sage] 2023/10/04(水) 17:42:01.17 ID:DAn/y1Is(2/2) AAS
C#・Unityの勉強としては
・非同期処理
上でも書いたがよく分かってない。今作っている範囲だと用途は少なそうだけど、唯一「アイテムを大量に捨てる場合」に役立ちそうな気がしている。
というのもアイテムを捨てる際には自作のアイテム管理クラスのアイテム破棄の関数をコールするのだが、検索システムに備えて入手時にコレクションへの登録を沢山しているので破棄時には逆にコレクションからの削除を行う必要がある
アイテム捨てる処理は入手処理と違って新たなインスタンスはほぼ生成しないのでGCの問題はないが、単純にコレクションへのアクセスが多いのと、プレイヤーが何百・何千個ものアイテムを一気に捨てることができるUIを組んでしまったので大量にアイテム破棄を行うと余裕で60fps割ってしまう。また所持品管理ディクショナリーの参照が切れるのでアイテムインスタンス自体もガベコレの対象になるのでガベコレによるスパイク発生の危険性も高くなる。
そこで非同期処理を用いてフレームを分散してアイテムの破棄を行えば、捨てる処理自体のスパイクは軽減できるかなと思った
プレイヤーは1f単位で処理を認識している訳ではないので、内部的には数fに分離しても多分気が付かない(あまりに重い場合は「アイテムを捨てています」等の進捗を画面に表示した方がよさそうだけど)
非同期処理はコルーチン、async/await、UniTaskあたりが有名なのかな?性能でいえばUniTask一択なんだろうけどまずはコルーチンから試してみようと思っている(GCは知らない)
88(1): 名前は開発中のものです。 [sage] 2023/10/07(土) 18:13:33.15 ID:zKcOYlJC(1) AAS
自分はインボーク、インボークリピートをもっぱら使うなぁ
89: 名前は開発中のものです。 [sage] 2023/10/07(土) 21:08:01.13 ID:AbV00O8h(1/3) AAS
>>88
InvokeやInvoke.RepeatingはMonoBehaviourの機能だから個人的にあまり使いたくないなあと思ったり(他のクラスに移植したり仕様変更する際に面倒そうなので…)
引数にstring型使うからアロケーションも心配
ただアタッチ先ゲームオブジェクトだけで完結する処理ならそれが手っ取り早そうだね
90(2): 名前は開発中のものです。 [sage] 2023/10/07(土) 21:19:34.52 ID:iuLYjSS8(1) AAS
でも引数はメソッドの名称だからアロケーション発生しないんじゃね?
91: 名前は開発中のものです。 [sage] 2023/10/07(土) 22:01:39.06 ID:AbV00O8h(2/3) AAS
>>90
エディタ上でテストプレイしてみたけど。確かにMonoJIT以外でのアロケーションは発生しないね
原因について雑に調べたけど、もしかしたら文字列リテラルだからコンパイル時に生成・メモリに格納されて一致する限りは使い回しがされるからっぽい
92: 名前は開発中のものです。 [sage] 2023/10/07(土) 22:01:43.61 ID:AbV00O8h(3/3) AAS
>>90
エディタ上でテストプレイしてみたけど。確かにMonoJIT以外でのアロケーションは発生しないね
原因について雑に調べたけど、もしかしたら文字列リテラルだからコンパイル時に生成・メモリに格納されて一致する限りは使い回しがされるからっぽい
93(1): 名前は開発中のものです。 [sage] 2023/10/07(土) 22:23:13.50 ID:ABeNJcDO(1) AAS
潔癖症みたいやねそこまで気にするのって
94(1): 名前は開発中のものです。 [] 2023/10/08(日) 09:30:28.99 ID:raa6/Dtd(1) AAS
非同期処理はコルーチンしか使ったことないや
95: 名前は開発中のものです。 [sage] 2023/10/08(日) 21:22:41.79 ID:9d1oOF7A(1) AAS
>>93
GCallocは削れば削るだけ良いからね
自分はECSを使うのは現状では無理そうだから削減可能な場所は全て対応するようにしている
>>94
MonoBehaviourで非同期処理を扱うならコルーチンが入門な感じがあるね
返し値を扱うのが面倒そうなのが難点だけどそれでもUniTaskよりはとっつきやすそう(偏見)
96(1): 名前は開発中のものです。 [sage] 2023/10/08(日) 21:32:09.46 ID:RWVJHt61(1) AAS
今のパソコンというか環境でも
やはりけづれる物は削る方がいい?
初心者とかそこまで考える必要はあるのかな?
97: 名前は開発中のものです。 [sage] 2023/10/09(月) 14:29:55.33 ID:rvC4W/MI(1) AAS
>>96
明らかなボトルネックや安定した後の最適化ならともかく、開発中はできるだけ素直でメンテナンスしやすいコードの方が良いよ
98: 名前は開発中のものです。 [sage] 2023/10/25(水) 17:52:32.75 ID:lBkP/TA2(1) AAS
進捗どうですか?
99: 名前は開発中のものです。 [sage] 2023/11/15(水) 23:27:25.96 ID:Qaq3TktU(1) AAS
エタったか
無駄なスレ建ててまで書くなよ
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.550s*