[過去ログ] 【ゲームエンジン】Unity初心者質問スレBuild2 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
928: 名前は開発中のものです。 [sage] 2020/01/07(火) 19:15:14.41 ID:zmI8ipko(3/4) AAS
C# 継承 複数で検索したら一応解決しました!
調べればすぐ分かることを聞いてしまってごめんなさい。
ありがとうございました!
929
(1): 名前は開発中のものです。 [] 2020/01/07(火) 19:34:51.14 ID:mTxkaJC9(1) AAS
聞く方もわかっていなければ、答える方も分かっていない典型だな
930: 名前は開発中のものです。 [sage] 2020/01/07(火) 20:11:34.92 ID:uM5ClZyr(1) AAS
質問失礼します
3人などの複数人で開発する場合に自分のみが有料アセットを所有しておりそれを使いたい場合のプロジェクトの管理方法はどうするのが一般的ですか?
931
(1): 名前は開発中のものです。 [sage] 2020/01/07(火) 20:25:27.78 ID:d7S3IRng(1) AAS
>>924
924(1): 名前は開発中のものです。 [sage] 2020/01/07(火) 18:44:04.37 ID:oElcyruO(1/2) AAS
>>919
ありがとう。PostProcess は試したんだけど、モバイルでは激重で使えなかったんだ。
>>920
クライアントに30fpsは死守せよと命じられたからね。まあクライアントも開発者も自分だけど…

プロファイラみたら、結構スクリプトで処理食ってるんで UniRX で Update() と FixedUpdate() を
置き換えた。Start() に UpdateAsObservable とかで全部書くやつ。

結果、あんまり変わんない、自分の使い方が悪いのか…
Updateの呼び出しじゃなくて中身が重たいんだと思われ
deep profile すれば具体的なメソッド名まで追えるから、まずはそれで負荷の高い処理を特定しましょう
932: 名前は開発中のものです。 [sage] 2020/01/07(火) 21:31:22.74 ID:oElcyruO(2/2) AAS
>>931
アドバイスありがとう。
詳細プロファイルみたら、どうやら処理の中身で gameObject.name.Contains("Hoge") とか
多用してるとこが処理コストが高いっぽい。
地道にプロファイラ見て、重そうな箇所をつぶしていくしかなさそうだね。

自分の使い方がこなれてないので、UniRX 自体は良さそうだと思った。
933
(1): 名前は開発中のものです。 [sage] 2020/01/07(火) 22:21:07.64 ID:zmI8ipko(4/4) AAS
>>929
確かにわかっていないので今まで通りpublicかシリアライズでインスペクターに表示して他のクラスを貼り付けたオブジェクトを入れています。

なにかこの作業を省略出来る方法はあるのでしょうか?

継承について聞けて調べた事は今後活かせる事もありそうなので感謝しています!
934: 名前は開発中のものです。 [sage] 2020/01/08(水) 00:37:03.99 ID:Hvk3XDsR(1) AAS
Updateの中でFindはさすがにStartでやってキャッシュしないとそりゃそうなるな……
935
(3): 名前は開発中のものです。 [] 2020/01/08(水) 04:02:14.62 ID:yDUxVkXo(1) AAS
Unityを触り始めた時、プレイヤーやエネミーなど、画面に表示するキャラクターは、GameObjectを継承した子クラスとして作るのかと思っていたのですが、そうではないですよね。

この様なプログラムに初めて触れるので今でも違和感があるのですが、何故この様な仕様になっているのでしょうか?

また、この様な実装方法は、デザインパターンで言うと、何パターンになるのでしょうか?

ご存知の方、いらっしゃいましたら、教えて頂けると嬉しいです。
お願い致します。
936: 名前は開発中のものです。 [] 2020/01/08(水) 04:34:56.94 ID:7cplqCOI(1) AAS
>>933
ゲットコンポーネントすればわざわざインスペクタで指定しなくていい
基本他のクラスファイルはそのまま使える
またネームスペース指定してるならusingで指定すれば使えるよ

>>935
ユニティはすべてコンポーネントからの継承
強いて言うならコンポーネントデザインだよ
それが分かった所でプログラム出来るようにはならないから無駄な質問はやめようね
937: 名前は開発中のものです。 [sage] 2020/01/08(水) 07:12:01.63 ID:STEsEzVT(1) AAS
継承が嫌ならインターフェース定義すればいいじゃない
938: 名前は開発中のものです。 [sage] 2020/01/08(水) 21:12:40.84 ID:c/TDM3Pm(1/5) AAS
>>935
MonoBehaviour を継承して、Update() とか FixedUpdate() とか様々なフックハンドラを実装してく作法だよ。
しいて言えば、GoFのObserver パターンに近いんじゃない。Unity 内部の実装は違うらしけど。

GameObject を継承するんじゃなくて、GameObject に上記の MonoBehaviour 継承クラスを紐づけて動作をさせる。
この仕様だと、GameObject が "複数"の MonoBehaviour 継承クラスの動作を行うことが出来る。

C# は多重継承出来ないでしょ、Unity よく考えられてるシステムだよね。
939: 名前は開発中のものです。 [sage] 2020/01/08(水) 21:25:51.83 ID:c/TDM3Pm(2/5) AAS
自分も最初 Unity のスクリプトに違和感というか、なんだろうこれは? と思った。
Unity 以外の他言語経験者というか、自分も職業プログラマの端くれなんで、
Player クラスとか、Enemy クラスを定義するんだよな。とか勝手に思って最初そのように書こうとしてた。

でも、Unity には GameObject という規定クラスがあり、それらに対する作用を MonoBehaviour 継承クラスに
記述して GameObject にアタッチ(紐づけ)するという仕組みを理解してからは、腑に落ちたというか納得出来た。
940: 名前は開発中のものです。 [sage] 2020/01/08(水) 21:42:58.57 ID:c/TDM3Pm(3/5) AAS
書いてて思ったけど、GameObject に拡張メソッド書けば良くね? と思って調べたら、やっぱりそうしてる人いた。
処理コストとか気になるけど、静的 Utuil クラスとか書くより、 拡張メソッド書いたらスマートに記述出来る箇所が山ほどある。

>>935 サンキュー めちゃめちゃ良い気づきを頂いたわ。
941: 名前は開発中のものです。 [sage] 2020/01/08(水) 22:04:58.83 ID:c/TDM3Pm(4/5) AAS
なるほど。GameObject に MonoBehaviour 継承クラス"型" の変数を自由に設定出来ると。
その "型" を "Component" と言いますと。そして、GameObject.GetComponent<型> で自由に変数を取得出来ますと。

最初からそう教えてくれればいいのに。
942
(1): 名前は開発中のものです。 [sage] 2020/01/08(水) 22:07:01.56 ID:c/TDM3Pm(5/5) AAS
Unity 良いね。ほんと好きになったわ。
元々 C# が超強力な言語なんで、とにかくプログラミングが楽しい。
943: 名前は開発中のものです。 [sage] 2020/01/08(水) 22:18:19.80 ID:HHbGzUHS(1) AAS
ここはお前の日記帳ちゃうで
944: 名前は開発中のものです。 [sage] 2020/01/08(水) 23:36:42.85 ID:Le5pG30A(1) AAS
>>942
まあ、みんな一度はそう思うんだけど、ゲームを作ってる以上、次はC#はもちろんUnityならではボトルネックの最適化でつまずくんだよなー
945
(1): 名前は開発中のものです。 [sage] 2020/01/09(木) 01:04:08.75 ID:9Vcb+knu(1) AAS
そこでJobSystem,Burst,ECSですよ
946: 名前は開発中のものです。 [sage] 2020/01/09(木) 02:30:18.61 ID:mwK+f391(1) AAS
DOTSはまだ早い
947: 名前は開発中のものです。 [sage] 2020/01/09(木) 10:09:19.78 ID:kIaaP1cE(1) AAS
JOBSYSREMとかビジネス啓蒙系のサイトっぽい名前
948: 名前は開発中のものです。 [sage] 2020/01/09(木) 10:23:49.72 ID:65C13n6s(1/4) AAS
boolの配列で中身の全てがtrueなら○○するという処理はどうやって書けばスマートですか?

今は配列の要素数が3しかないのでifを使った分岐で力技で動かせて居ますが数が増えたときの事を想像すると頭が痛いです。
949: 名前は開発中のものです。 [sage] 2020/01/09(木) 10:47:15.13 ID:9CjsCJlx(1) AAS
if文を3つ書いてるということならforeach使おう
950
(1): 名前は開発中のものです。 [sage] 2020/01/09(木) 11:16:55.09 ID:bvBlalIf(1) AAS
配列数が固定ならFlags付けたenumでビットフラグ使う

動的に増減するなら設計がおかしいんだがLINQのAllを使えば簡単に書ける
951: 名前は開発中のものです。 [sage] 2020/01/09(木) 11:32:20.48 ID:65C13n6s(2/4) AAS
for(int count = 0; count <= 2; count++)
{
if(配列[count]== true)
{
変数++;
}
}

if(変数 == 3)
{
処理
}

にしてみたのですが微妙ですか?
foreachとlinqはまだ使い方がわからないのですが調べてみます。
952
(1): 名前は開発中のものです。 [] 2020/01/09(木) 12:00:30.94 ID:AbIkBBD9(1/2) AAS
1つでもfalseならリターンすればいい
そうすりゃ無駄な変数いらんよ
あとfor で回す場合、<変数.lengthが使えるから増えても問題なし
1-
あと 50 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.016s