Unity初心者の俺が調べたことをメモするスレ (99レス)
Unity初心者の俺が調べたことをメモするスレ http://mevius.5ch.net/test/read.cgi/gamedev/1693399963/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
80: 名前は開発中のものです。 [sage] 2023/09/26(火) 21:52:51.98 ID:2Scqx0S0 制作が軌道に乗ってくるとメモすることがなくなるんだよな 既に調べた知識で作り続けるだけだから だいぶ先になるけど有料アセットのうちFinalIKとEasySaveは詳しく使い方を覚えたいし覚えたら書くかねえ 特にFinalIKはUnity標準のメカニムとどのくらい共用できるのか知りたい http://mevius.5ch.net/test/read.cgi/gamedev/1693399963/80
81: 名前は開発中のものです。 [sage] 2023/09/28(木) 22:06:34.28 ID:dc32lg9p 製作順調なら製作進捗でもいいんだよ http://mevius.5ch.net/test/read.cgi/gamedev/1693399963/81
82: 名前は開発中のものです。 [sage] 2023/09/29(金) 19:51:15.97 ID:4YW0vA30 >>81 それはアリだねただ一応秘密で作ってるんでどこまで内容書くかは悩みどころだが 今やってるのはアイテム合成システムの設計 合成時に素材の特殊能力を引き継ぐのだが、異なる特殊能力同士が合体して新たな特殊能力に変わるシステムをどうやって実装するか考えている 一番手っ取り早そうなのは、 ①素材アイテムの特殊能力をコレクションに格納する→②コガネブログからお借りした組み合わせ列挙拡張メソッドを使って事前に指定した合体組み合わせに該当するか調べる→③合体組み合わせが不存在になるまで繰り返す かなと思っている http://mevius.5ch.net/test/read.cgi/gamedev/1693399963/82
83: 名前は開発中のものです。 [] 2023/09/30(土) 07:12:12.43 ID:HN5eRe95 俺もちょうど合成システム作ってるとこでビビった 俺は2つのarrayをソートして、比較する単純なものだけど… http://mevius.5ch.net/test/read.cgi/gamedev/1693399963/83
84: 名前は開発中のものです。 [sage] 2023/09/30(土) 22:25:15.09 ID:AozLAQh5 >>83 合成が合成システムを実行したその1回しか行われないならそのやり方の方が楽そう 自分のは合成して特殊能力が合体した際に次レベルの合体条件も満たしていたら順次合体を繰り返していく機能を想定しているから、配列やリストを何回も走査すると重いかもなあという懸念がある ただコガネブログのも合体成立時に何回も呼び出すと重そうなので、素材アイテムの持つ特殊能力の管理番号全てをHashSetに入れて、差集合とAddを使って合体組み合わせを探していくのもアリかも こればっかりは自分の設計に合わせて複数のコードを組んで検証してみるしかないね http://mevius.5ch.net/test/read.cgi/gamedev/1693399963/84
85: 名前は開発中のものです。 [sage] 2023/10/04(水) 01:17:36.07 ID:1pamoYKo おや?停滞? 良スレかと思ってたが、中途半端に投げ出す感じな http://mevius.5ch.net/test/read.cgi/gamedev/1693399963/85
86: 名前は開発中のものです。 [sage] 2023/10/04(水) 17:41:48.36 ID:DAn/y1Is 今は既に調べておいた知識でゆっくり作っている状況だから特に書くことが無いのよね グラフィックス関係の勉強もしてるんでそっちに多く時間を割いてるのもある 一応調べたことの備忘のスレのつもりなんで、何も調べてないのに毎日作業内容を報告するのもなんか違うと思うし あと単純に最近安定して5chが見られなくないか? 基本的にメモは作業用ではないPCのEdgeで書いてレスしてるけど、今もまたスレが開けなくて内容ドライブ経由でコピーしてスマホからレスした 今やってる作業はアイテム合成システムのクラス設計、メニュー画面・装備画面UIの作成あたりかな ゲームシステムについての最近考えている事は ・アイテムの購入・売却の実装 既にエクセルデータをスクリプタブルオブジェクト化して売値・買値等のデータを取り込んである & プレイヤー以外もアイテムを所持できるようにプレイヤー・NPCの共通基底キャラクタークラスに所持品クラスのフィールドと取得用インターフェースを実装済み、装備画面UIの作成時に抽象クラスとインターフェースを利用して割と再利用性を高めてある(つもり)なので、作成自体はそこまで難しくなさそう。 アイテム売る商人の持つアイテムデータは、アイテムインスタンスクラスに[Serializable]を付けてキャラクタークラス→所持品クラス→アイテムインスタンスで開いてインスペクターから直接設定するか、又は何らかのコレクションで値だけインスペクターから設定してStart関数でアイテムクラスのインスタンスをnewしてコンストラクタにその値を渡してやればよさそう ただそもそもゲーム内に商人を実装するかは未定 ・3Dのゲーム性を採用するか 購入済みのノーコード系アセットがパフォーマンスの向上目指して改修されるそうなんでやっぱり使ってみたい感がある(気持ちの問題)。 あとこのアセットがasync/await使ってる所為でアセットの機能にアクセスするとそれなりにGC発生するんだけど、将来的にはUnityにも.NET5のAsyncValueTaskが導入されたら更にパフォーマンス向上するかも(非同期処理のこと全然分かってないので自分でアセットのコアコードをUniTaskに置き換えるのはまだ怖い) http://mevius.5ch.net/test/read.cgi/gamedev/1693399963/86
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
88: 名前は開発中のものです。 [sage] 2023/10/07(土) 18:13:33.15 ID:zKcOYlJC 自分はインボーク、インボークリピートをもっぱら使うなぁ http://mevius.5ch.net/test/read.cgi/gamedev/1693399963/88
89: 名前は開発中のものです。 [sage] 2023/10/07(土) 21:08:01.13 ID:AbV00O8h >>88 InvokeやInvoke.RepeatingはMonoBehaviourの機能だから個人的にあまり使いたくないなあと思ったり(他のクラスに移植したり仕様変更する際に面倒そうなので…) 引数にstring型使うからアロケーションも心配 ただアタッチ先ゲームオブジェクトだけで完結する処理ならそれが手っ取り早そうだね http://mevius.5ch.net/test/read.cgi/gamedev/1693399963/89
90: 名前は開発中のものです。 [sage] 2023/10/07(土) 21:19:34.52 ID:iuLYjSS8 でも引数はメソッドの名称だからアロケーション発生しないんじゃね? http://mevius.5ch.net/test/read.cgi/gamedev/1693399963/90
91: 名前は開発中のものです。 [sage] 2023/10/07(土) 22:01:39.06 ID:AbV00O8h >>90 エディタ上でテストプレイしてみたけど。確かにMonoJIT以外でのアロケーションは発生しないね 原因について雑に調べたけど、もしかしたら文字列リテラルだからコンパイル時に生成・メモリに格納されて一致する限りは使い回しがされるからっぽい http://mevius.5ch.net/test/read.cgi/gamedev/1693399963/91
92: 名前は開発中のものです。 [sage] 2023/10/07(土) 22:01:43.61 ID:AbV00O8h >>90 エディタ上でテストプレイしてみたけど。確かにMonoJIT以外でのアロケーションは発生しないね 原因について雑に調べたけど、もしかしたら文字列リテラルだからコンパイル時に生成・メモリに格納されて一致する限りは使い回しがされるからっぽい http://mevius.5ch.net/test/read.cgi/gamedev/1693399963/92
93: 名前は開発中のものです。 [sage] 2023/10/07(土) 22:23:13.50 ID:ABeNJcDO 潔癖症みたいやねそこまで気にするのって http://mevius.5ch.net/test/read.cgi/gamedev/1693399963/93
94: 名前は開発中のものです。 [] 2023/10/08(日) 09:30:28.99 ID:raa6/Dtd 非同期処理はコルーチンしか使ったことないや http://mevius.5ch.net/test/read.cgi/gamedev/1693399963/94
95: 名前は開発中のものです。 [sage] 2023/10/08(日) 21:22:41.79 ID:9d1oOF7A >>93 GCallocは削れば削るだけ良いからね 自分はECSを使うのは現状では無理そうだから削減可能な場所は全て対応するようにしている >>94 MonoBehaviourで非同期処理を扱うならコルーチンが入門な感じがあるね 返し値を扱うのが面倒そうなのが難点だけどそれでもUniTaskよりはとっつきやすそう(偏見) http://mevius.5ch.net/test/read.cgi/gamedev/1693399963/95
96: 名前は開発中のものです。 [sage] 2023/10/08(日) 21:32:09.46 ID:RWVJHt61 今のパソコンというか環境でも やはりけづれる物は削る方がいい? 初心者とかそこまで考える必要はあるのかな? http://mevius.5ch.net/test/read.cgi/gamedev/1693399963/96
97: 名前は開発中のものです。 [sage] 2023/10/09(月) 14:29:55.33 ID:rvC4W/MI >>96 明らかなボトルネックや安定した後の最適化ならともかく、開発中はできるだけ素直でメンテナンスしやすいコードの方が良いよ http://mevius.5ch.net/test/read.cgi/gamedev/1693399963/97
98: 名前は開発中のものです。 [sage] 2023/10/25(水) 17:52:32.75 ID:lBkP/TA2 進捗どうですか? http://mevius.5ch.net/test/read.cgi/gamedev/1693399963/98
99: 名前は開発中のものです。 [sage] 2023/11/15(水) 23:27:25.96 ID:Qaq3TktU エタったか 無駄なスレ建ててまで書くなよ http://mevius.5ch.net/test/read.cgi/gamedev/1693399963/99
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.520s*