Unity初心者の俺が調べたことをメモするスレ (99レス)
1-

21: 2023/09/07(木)23:01 ID:zzCLMbJH(1) AAS
眠いから雑なぼやき

シングルトンを初めて自分のゲームに導入してみた。理由はどういうものか使ってみたかったから。
戦闘システム管理クラスをシングルトンにした。戦闘キャラクラスからたくさんアクセスする。
これが密結合か?
グローバル変数化を目的として作っちゃいけないという話は聞いたことあるけど、これもその一つかもしれない。
この辺のコード作成のパターンの理念について何も知らないからそろそろ勉強するときかなあ
22: 2023/09/08(金)22:50 ID:whCfvpks(1) AAS
GCalloc(ヒープメモリアロケーション)にまとめたいけどまだ理解が足りていない
今日は有料アセットのGCalloc潰しを中心に作業をしたが、フィールドのList<構造体>をSortする箇所でアロケーションが発生する理由がイマイチよく分からなかった
引数としてデリゲートを渡すとアロケーションが発生するのはその都度コンパイラがnewしてしまうからで、「デリゲートの代わりにメンバを参照しないラムダ式を利用する」と初回のみのアロケーションで済むらしい
実際ラムダ式に変えたら毎フレームのGCallocが消えたのだが、「IComparerを実装したクラスのインスタンスを利用する」という方法もあると聞き、こちらも試してみたところGCallocは消えないどころか増えた
なんかボックス化というものが絡んでいるような気もするがよく分からないので今日はこれで終わり
23
(1): 2023/09/09(土)23:03 ID:DhDPacVH(1/2) AAS
GCalloc潰し二日目
昨日IComparerでGCallocが防止出来なかった理由については未だに分かっていない(というか殆ど調べていない)
「ラムダ式でメンバを参照する」コードを複数の有料アセットで見かける
GCalloc対策の話題でまず槍玉に上がる点だと思うのだが、あまり気にされていない・自分が気にしすぎなのだろうか?
24
(1): 2023/09/09(土)23:10 ID:O6P9FobY(1) AAS
えーと
研究者なら気にしてもいいかと
アプリ開発するなら今のハード考えると気にし過ぎじゃね
てか気にする必要ないでしょ
25: 2023/09/09(土)23:34 ID:DhDPacVH(2/2) AAS
>>24
やっぱり気にし過ぎかなあ
特に今作っているゲームはPC向けだから尚更処理落ちやクラッシュはし辛いだろうし
一応自分でコード書く時はアロケーションは基本的に避けるようにしてるけど、有料アセットまで潰して回る必要はないか
26: 2023/09/09(土)23:46 ID:tG9qh3d0(1) AAS
ガベージコレクションなんかC#の基本なんだから気にしなくていいだろ
そんなに嫌ならBurstCompilerでもJobSystemでもECSでも使えば良い
27
(1): 2023/09/10(日)00:04 ID:u9L0A1tk(1/2) AAS
結構規模の大きいものを作ってるから可能な限り潰しておきたい感はあるのよね
数時間のプレイに堪えられるような設計にしたい
28
(1): 2023/09/10(日)00:11 ID:nCKHuG8g(1) AAS
>>27
ECS,BurstCompiler使えよ
29
(2): 2023/09/10(日)09:03 ID:hFRQptHY(1) AAS
>>23
かける労力と得られるものが釣り合ってると思えるならそれぞれの判断でいいと思うけどね
今自分の作ってるやつはインクリメンタルGCついてても数分に一回3~7msくらいのGC Collectが発生してて
シューティングゲームなんでもう少しGCAlloc潰したほうがいいだろうなと思ってる
30
(1): 2023/09/10(日)15:42 ID:j4PqFMUR(1) AAS
あかん、行こう
31
(1): 2023/09/10(日)21:59 ID:u9L0A1tk(2/2) AAS
>>28
ECSは全然理解してないし有料アセットとの兼ね合いが悪い(自分で調整できない/作業量多すぎ)だから導入するつもりは現状ないかなあ
アセット開発者がDiscordで今からECS対応は難しいって言っているのも見かけたし

>>29
どういうコードがGCalloc発生するのか自分で見て覚えていきたいってのもあるし、しばらくは続けようかな
シューティングゲームって弾幕GameObjectのinitialize/Destroyやオブジェクトプール行き来のDisable/Enableで最適化が大変そうだなあ
差し支えなければ教えてほしいんだけど重い処理を行っている時ってフレーム毎にどのくらいGCalloc発生してますか?

>>30
?

今日はNPC(アセットのコンポーネント)のUpdate30個をOnUpdateに変えるお試し軽量化をしてみた
省6
32
(1): 2023/09/10(日)22:01 ID:pyk4erDp(1/2) AAS
ところでヌシはタイトルには初心者って書いてるけど
所持がガベージとか気にしないよね?

ナニモン?
33: 2023/09/10(日)22:01 ID:pyk4erDp(2/2) AAS
所持ちゃう、初心者
34
(1): 29 2023/09/11(月)07:46 ID:2rYAG6dH(1) AAS
>>31
大量にオブジェクト扱う部分は全部Burst使ってるから重い部分ではGCAllocは発生してないし、まだ開発序盤で一時的にお試しで入れてるコードやシューティングと関係ないアセットなんかでGCAllocが出てるだけなので参考になりそうな数字は持ってないよ、申し訳ない
35: 2023/09/11(月)21:22 ID:GchgKIS7(1/2) AAS
>>34
なるほどありがとう
自分のゲームはだいぶ時間かかりそうだからその間にECSやバーストコンパイラーの仕様や情報が充実するといいなあ

>>32
Unity歴5ヵ月弱の初心者だよ

今日はあまり何もしなかった
自作インベントリの検索機能を少し弄ったけど何となく前の仕様の方が使い勝手が良かった気がして結局コードを元に戻した
検索機能を処理する複数のクラスが絡み合っているので(密結合とはこういう状態?)、今後の保守や改良に備えてコードを見直した方がいいかもしれないと思った
自作スクロールの描画処理については既に一部をインターフェースや抽象クラスにしてあるので、検索機能も(今のところ予定はないけど)インベントリ以外に流用することを考えると同じように改良したい
ただこの辺はコーディングや設計の思想について先に学ばないと結局グダりそうだね
36: 2023/09/11(月)21:58 ID:dpI1L58C(1) AAS
歴5ヶ月でインタフェースや抽象クラスとか

Unityは浅いけどC#は長い?
37: 2023/09/11(月)22:31 ID:GchgKIS7(2/2) AAS
Unity歴とC#歴は同じ
プログラミングはキッズの頃にキッズ向け言語とRPGツクールのRGSS(Ruby)を少しやった程度
ただRubyはもう全く覚えてない
38: 2023/09/12(火)22:16 ID:Agu+xwh8(1) AAS
ジェネリックについての勉強を少し始めた
自作のスクロールを拡張する上で複数の型を扱うことになるかもしれないので、スクロールの抽象クラスに一部ジェネリックの抽象プロパティや抽象メソッドを実装して今後のコーディングを統一的にするのが目的
ジェネリックな関数には制約条件というものが付けられるそうなので、これでスクロールに渡すべき型に特定のインターフェースの実装を要求すればコーディングのミスも減りそう
逆に言うとこれも個人開発だとミスの防止という点以外の利点が分からん…もっと勉強が必要そうだ
39
(1): 2023/09/12(火)22:30 ID:DqJC+Tye(1) AAS
すごいなぁ

自分はUnity半年あたりはやっと3DでUnityちゃんが動いて喜んでたわ

それで満足してた(笑)
40
(1): 2023/09/13(水)08:16 ID:zrU2QrrP(1) AAS
俺も歴同じくらいでほぼほぼchatGPTに聞きながらやってるけど>>1ほど理解せずに進めちゃってる
キャラクターをステートマシンで動かしてるんだけど、抽象クラスとジェネリック使う機会あってほー便利だなあって思った気がするな
1-
あと 59 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.036s