Unity初心者の俺が調べたことをメモするスレ (99レス)
前次1-
抽出解除 レス栞

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
20: 名前は開発中のものです。 [sage] 2023/09/06(水) 22:29:47.35 ID:xeaBYfjk(1) AAS
>>18
18(2): 名前は開発中のものです。 [sage] 2023/09/05(火) 22:33:42.70 ID:Ts+LtVa/(1) AAS
UIやってるなら今ならちょうど

ユニティ・テクノロジーズ・ジャパンは、日本語の電子書籍『Unityにおけるユーザーインターフェースのデザインと実装』を無料で提供。専用ページから申し込めばダウンロードできるようになりました

てことで無料で見られるよ
Startを1frame待つのは理にかなってるんじゃないかな
Start関数は画面表示前の処理だし、1frameということは表示してからだから
確実だよね
情報サンクス
早速ダウンロードしてみたわ
UIToolKitはまだ全く手付かずだからどういうものか早く勉強しないとなあ

サンプルシーンで1f待ってるのはStartじゃなくてOnEnableね
そのサンプルはアイテム管理システムで、マネージャークラスがOnEnableでコルーチンで1f待機している間に、ゲーム開始後に道具メニューを開いた時に初めて生成されるアイテム表示用プレハブたちがStartで参照情報をマネージャーに渡してくる設計になっていた
マネージャーのOnEnableでプレハブの描画更新とイベントへのデリゲートの登録をやってるので、仮に1f待機がないとプレハブが生成される最初の1回目だけ参照情報をまだ受け取っておらずヌルリファが発生するからだと思われる

その5 「抽象クラスの個人開発における利点がよく分からない」
まとめというより疑問に近い。
抽象クラスのメリットを調べると、大抵のサイトや記事では「抽象化によって複数人の開発で統一が取れたコードが作成できる」といった内容が挙げられている。では、個人開発における抽象クラスの利点は何なのだろうか。
結論から言うと調べても自分にはあまり理解できなかった。「無い」や「殆ど無い」としている記事も散見される。
というのも、単に複数のクラスで共通したルールを実装したいなら純粋に基底クラスを継承して利用すればだいたい足りる気がする。
たしかに抽象クラスで関数の名称やシグネチャなどを設定して派生クラスにそれに沿った実装を強制するのは、コードの統一性を確保する上では有用ではあるが、個人開発だとコードを弄るのは基本的に自分だけなので、自分で注意すればよくない?という気も
まあC#に限らずヒューマンエラーを防げます系機能は究極的には全部「自分で注意すりゃよくない?」になるし、もちろん自分にそんな神みたいなこと無理なんで…(OnEnableとStartで何回もエラー引き起こす程の低い注意力)
自分としては抽象クラスは「インスタンスは絶対これで生成しないけど共通・統一された処理を実装したい」ケースでお守り的に使っていこうかなと思った(適当)
28
(1): 名前は開発中のものです。 [] 2023/09/10(日) 00:11:59.35 ID:nCKHuG8g(1) AAS
>>27
27(1): 名前は開発中のものです。 [sage] 2023/09/10(日) 00:04:42.69 ID:u9L0A1tk(1/2) AAS
結構規模の大きいものを作ってるから可能な限り潰しておきたい感はあるのよね
数時間のプレイに堪えられるような設計にしたい
ECS,BurstCompiler使えよ
61: 名前は開発中のものです。 [sage] 2023/09/18(月) 22:31:41.35 ID:+Uz7sHbq(1) AAS
アウトプットも兼ねて覚えたこと書き殴りたくなる機会がたまにあるんだけど、Unityの制作面中心の雑談スレが見当たらなかったからノリで立てちゃったのよねすまん
代わりに毎日何かしらは作業する・調べるように努力してます

今日気になったこと
・ジェネリックの扱い方
ジェネリックと抽象クラスを利用してUI関係の整理を続けていたが、独自セレクタブルたちが引数の型の異なるRefresh関数(描画情報を更新するために管理クラス側からコールされるpublicな関数)をそれぞれ持っており、これをどうやって統一するか悩む
統一すること自体は抽象クラスにRefresh関数自体をジェネリック<T>で抽象メソッドとして宣言すれば簡単にできるのだが、そうすると同時セレクタブルたちの型が抽象クラスとしても異なってしまうため、管理クラス側から独自セレクタブルたちの配列を扱う時にその型(内部実装)を知る必要性が出てきてしまうように思える
インターフェースでよくないか?とも思ったのだが、インターフェースはUnityの標準機能ではシリアライズ化できないし、キャストしたりGetComponentで具体的な型を指定しないと多分Transform等にもアクセスができないしどうしたものか
抽象クラスの基底に更に抽象クラスを宣言すれば何とかなるのかな…明日以降検証してみる

ちなみにコレクションの復習はまだ出来ていない
というかUIのクラスとレイアウト周りの整理が中心で、検索システムとか内部面は一段落したので暫くコード書くときにコレクションに触れてない
アイテム合成とか敵からのドロップテーブル等を実装する時にまた考えるかな(10月以降)
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.006s