Unity初心者の俺が調べたことをメモするスレ (99レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
65: 2023/09/20(水)22:16 ID:6f4RNUvQ(1/3) AAS
>>63-64
必要ならキャッシュしておいた方がいい、との記述はあるものの
外部リンク:learn.microsoft.com
色々な人の検証結果を見る限りはGetComponentを1フレーム内で数万回繰り返しても、処理時間はそれ自体ではぶっちゃけ殆ど差が出ないみたいだね
そう考えると実はUpdate内で毎度呼び出しても現実的なボトルネックにはならないんだろうね
ある意味「GetComponentは重いぞ神話」が独り歩きしている状況かもしれない
自分は基本的にその場限りで利用する場合以外はキャッシュするけども
66: 2023/09/20(水)22:21 ID:6f4RNUvQ(2/3) AAS
代わってGameObject.Find系は本当に看過できないほど重いようだ
ゲームオブジェクト全体を走査する系の処理は重いのは感覚的にもよく分かる
同じくゲームオブジェクト全体にメッセージを送信するSendMassageも滅茶苦茶重いらしくてMicrosoftのDocには
「SendMessage() と BroadcastMessage() は、どんな犠牲を払っても排除されるべきです。これらの関数は、直接関数呼び出しよりも約1000倍遅くなる可能性があります。」(google翻訳)
って書いてあって草
素直にUnityEventsかC#Eventを使うのが安心だな
68: 2023/09/20(水)22:30 ID:6f4RNUvQ(3/3) AAS
>>67
あと可能性があるとしたら、TransformへのアクセスはUnityのバージョンアップで最適化がされたことがあるそうで、GetComponentもそうなのかもしれん(調べてない)
・今日の作業
今日の作業は昨日と変わらず、重い処理関係以外で特に何も調べたりはしなかった
引き続き設計思想の話としては、インスペクターから値・参照を設定・確認できるのは便利である一方で、Unityに慣れるにつれてインスペクターから設定しなくてはならないのはコードとインスペクターの双方を行き来する必要があって面倒だとも感じてきた
UnityにはEventTriggerなど便利なコンポーネントが存在しているが、一部は自分でスクリプトを組めば代替できるものもある
GameObject.Find系が推奨されないもう一つの理由として「制作途中の仕様変更に弱い」という指摘があるが、これにはコードとインスペクターだけではなくヒエラルキーも動作確認の際にチェック対象になってしまう煩雑さを回避したいという願いが暗に含まれていそうだ
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.017s