Unity初心者の俺が調べたことをメモするスレ (99レス)
上
下
前
次
1-
新
87
: 2023/10/04(水)17:42
ID:DAn/y1Is(2/2)
AA×
[240|
320
|
480
|
600
|
100%
|
JPG
|
べ
|
レス栞
|
レス消
]
87: [sage] 2023/10/04(水) 17:42:01.17 ID:DAn/y1Is C#・Unityの勉強としては ・非同期処理 上でも書いたがよく分かってない。今作っている範囲だと用途は少なそうだけど、唯一「アイテムを大量に捨てる場合」に役立ちそうな気がしている。 というのもアイテムを捨てる際には自作のアイテム管理クラスのアイテム破棄の関数をコールするのだが、検索システムに備えて入手時にコレクションへの登録を沢山しているので破棄時には逆にコレクションからの削除を行う必要がある アイテム捨てる処理は入手処理と違って新たなインスタンスはほぼ生成しないのでGCの問題はないが、単純にコレクションへのアクセスが多いのと、プレイヤーが何百・何千個ものアイテムを一気に捨てることができるUIを組んでしまったので大量にアイテム破棄を行うと余裕で60fps割ってしまう。また所持品管理ディクショナリーの参照が切れるのでアイテムインスタンス自体もガベコレの対象になるのでガベコレによるスパイク発生の危険性も高くなる。 そこで非同期処理を用いてフレームを分散してアイテムの破棄を行えば、捨てる処理自体のスパイクは軽減できるかなと思った プレイヤーは1f単位で処理を認識している訳ではないので、内部的には数fに分離しても多分気が付かない(あまりに重い場合は「アイテムを捨てています」等の進捗を画面に表示した方がよさそうだけど) 非同期処理はコルーチン、async/await、UniTaskあたりが有名なのかな?性能でいえばUniTask一択なんだろうけどまずはコルーチンから試してみようと思っている(GCは知らない) http://mevius.5ch.net/test/read.cgi/gamedev/1693399963/87
の勉強としては 非同期処理 上でも書いたがよく分かってない今作っている範囲だと用途は少なそうだけど唯一アイテムを大量に捨てる場合に役立ちそうな気がしている というのもアイテムを捨てる際には自作のアイテム管理クラスのアイテム破棄の関数をコールするのだが検索システムに備えて入手時にコレクションへの登録を沢山しているので破棄時には逆にコレクションからの削除を行う必要がある アイテム捨てる処理は入手処理と違って新たなインスタンスはほぼ生成しないのでの問題はないが単純にコレクションへのアクセスが多いのとプレイヤーが何百何千個ものアイテムを一気に捨てることができるを組んでしまったので大量にアイテム破棄を行うと余裕で割ってしまうまた所持品管理ディクショナリーの参照が切れるのでアイテムインスタンス自体もガベコレの対象になるのでガベコレによるスパイク発生の危険性も高くなる そこで非同期処理を用いてフレームを分散してアイテムの破棄を行えば捨てる処理自体のスパイクは軽減できるかなと思った プレイヤーは単位で処理を認識している訳ではないので内部的には数に分離しても多分気が付かないあまりに重い場合はアイテムを捨てています等の進捗を画面に表示した方がよさそうだけど 非同期処理はコルーチンあたりが有名なのかな?性能でいえば一択なんだろうけどまずはコルーチンから試してみようと思っているは知らない
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 12 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
ぬこの手
ぬこTOP
0.049s