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

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(3): ageteoff [ageteoff] 2019/05/08(水) 14:35:37.58 ID:VDHuk8YT(1/2) AAS
ゲームエンジンUnityを楽しむ初心者による初心者の為のスレ
その為「アセットを購入しましょう」「チュートリアルやれ」「ググレカス」等禁止
初心者が親身になって初心者に教える。
又ググレの場合、何のキーワードでググるのか書いてね

●リンク
・Unity(日本公式サイト)
http://unity3d.com/jp
・マニュアル
 http://docs.unity3d.com/ja/current/Manual/index.html
・チュートリアル
 http://unity3d.com/jp/learn/tutorials
・スクリプトリファレンス
 http://docs.unity3d.com/ja/current/ScriptReference/index.html
・FAQ
 http://unity3d.com/jp/unity/faq
・MSDN
 http://msdn.microsoft.com/ja-jp/ms348103←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。
903
(1): 名前は開発中のものです。 [sage] 2020/01/05(日) 14:39:39.76 ID:bo4vBboO(3/6) AAS
>>901 902
アドバイスありがとう。
今回はひとまず Canvas に "画像" を追加して、青緑の半透明に設定し、
水中判定の時にON, OFFすることによって目的の機能が実装出来た。

が、FPSは、水中で27fpsとか微妙な数値になってしまうので、
もう少し水中動作時の処理負荷の原因を追う必要があるみたい。
でもサンキュー。
904
(1): 名前は開発中のものです。 [sage] 2020/01/05(日) 15:30:32.39 ID:ZhgV+v79(2/2) AAS
>>903
リアルタイムならon offで重さが変わるから、色味に影響のない透明度0.01ぐらいで置いて、処理時間をなるべく変化させないということもあるぎゃ。
905
(2): 名前は開発中のものです。 [sage] 2020/01/05(日) 16:52:03.66 ID:UKiA3e/s(1/2) AAS
RAM3GBとかどんなハイスペスマホだよww
そんなの持ってるやつ数パーセントもいないぞ
906
(1): 名前は開発中のものです。 [sage] 2020/01/05(日) 17:06:52.35 ID:oPeOUZBr(1/2) AAS
Unityとは関係ないけどバトルゲームでのアニメーションの時間感覚がわからん

ボタン押す→予備動作→アクション→ヒット→戻るって遷移で
ボタン押してヒットまでの時間を0.33秒にしたら
見せた友人に早すぎてわからんと言われたし…

棒切れで人をポカリと殴るモーションなんだが
907: 名前は開発中のものです。 [sage] 2020/01/05(日) 18:05:12.83 ID:bo4vBboO(4/6) AAS
>>904
ありがとう。今、Canvas に ”画像” 貼る解決法は保留にして、カメラに自作スクリプト付けようと試してた。

void OnRenderImage(RenderTexture src, RenderTexture dest) {
 Graphics.Blit(src, dest, material);
}
とかで、試しにマテリアルに "water" のマテリアル渡したら効果が付いた。
よし、初めてシェーダー書くか! と思ったら記述言語 C# じゃない…
青緑半透明をオーバーレイするだけのシェーダーなんだけどね。調べるか。
908: 名前は開発中のものです。 [] 2020/01/05(日) 18:12:05.93 ID:8EV9fu0v(2/3) AAS
>>906
愚痴なら次のスレに
【質問以外なんでもOK】Unity雑談スレッドその3
2chスレ:gamedev
909
(1): 名前は開発中のものです。 [sage] 2020/01/05(日) 18:14:39.35 ID:bo4vBboO(5/6) AAS
>>905
RAM 3GBは個人的なアプリ動作の想定値だったけどこれから増えてくると思う。
数年前の RAM 1GB〜2GB時代には、モバイルでUnity制作の3Dゲームは厳しいだろうなと思ってたけど、
RAM 3GB〜4GBの時代になりつつある今、Unityで3Dゲーム開発だ!と思ってここに来たとこ。
910
(1): 名前は開発中のものです。 [sage] 2020/01/05(日) 18:55:55.72 ID:UKiA3e/s(2/2) AAS
>>909
日本人の後進性を舐めすぎ
3GBスマホなんか絶対普及しないから諦めろww
911: 名前は開発中のものです。 [sage] 2020/01/05(日) 19:03:19.71 ID:Vyi2hsuy(1/2) AAS
浦島太郎かよ
いまどきキャリアもMVNOも3GB以上しか売ってねーよ
912: 名前は開発中のものです。 [sage] 2020/01/05(日) 19:08:43.34 ID:oPeOUZBr(2/2) AAS
ID:UKiA3e/sのビルドターゲットってバージョン何?
913: 名前は開発中のものです。 [sage] 2020/01/05(日) 19:13:04.30 ID:UK9nGc23(1) AAS
荒野行動がさらに快適に遊べるようになるんやなあ
914: 名前は開発中のものです。 [sage] 2020/01/05(日) 19:15:37.63 ID:Vyi2hsuy(2/2) AAS
SIMフリーの低スペ機種とか年寄り専用スマホが3GB
3大キャリアが主力で売ってるのは4GBと6GBだからな
915: 名前は開発中のものです。 [sage] 2020/01/05(日) 19:20:54.14 ID:N5s8+lOM(1) AAS
>>905 >>910
これってなんかのネタ?
916: 名前は開発中のものです。 [sage] 2020/01/05(日) 19:50:14.20 ID:IxHDmQr7(1) AAS
書込みがガラプーおじさんだったら笑う
917
(1): 名前は開発中のものです。 [sage] 2020/01/05(日) 20:47:45.09 ID:bo4vBboO(6/6) AAS
自己レスだけど、青緑透明シェーダー作ったが、普通のサーフェイスシェーダーだと
カメラに付けても半透明の視界が得られず、フラグメントシェーダで青緑透明シェーダーを作成した。

Windows 10 開発機でそこそこ動いて、Android 9 にビルド実行したら、激遅というかまともに動かなかった…
まあ、シェーダーの基本の "き" くらいは体験できたので面白かったけど。

自作シェーダーでも無理となるとキャンバス前面に "画像" 貼り付け? 明らかに処理遅くなるんだよな。
918: 弟子 [] 2020/01/05(日) 21:30:29.38 ID:8EV9fu0v(3/3) AAS
さぁ900越えて加速したね
完走まであと少し愚痴も雑談も歓迎!
頑張っていきましょう!
919
(1): 名前は開発中のものです。 [sage] 2020/01/06(月) 00:01:07.52 ID:dCLcpxvc(1) AAS
>>917
ぽストプロセスでやるべき?詳しく知らんけど
920
(1): 名前は開発中のものです。 [] 2020/01/06(月) 09:42:41.75 ID:gkYFwUQg(1) AAS
水の中だし動きも遅くなっていいんじゃね
921: 名前は開発中のものです。 [sage] 2020/01/06(月) 12:00:11.26 ID:LKBBcVzd(1) AAS
Unity関連で初笑い
922: 名前は開発中のものです。 [sage] 2020/01/06(月) 12:26:51.42 ID:MVMM0EnC(1) AAS
課金ボタンだけ反応しねえ!
923: 名前は開発中のものです。 [sage] 2020/01/07(火) 16:39:17.47 ID:N6ynwaTL(1/2) AAS
反応したと思ったら失敗表示しか出ねえ!
924
(1): 名前は開発中のものです。 [sage] 2020/01/07(火) 18:44:04.37 ID:oElcyruO(1/2) AAS
>>919
ありがとう。PostProcess は試したんだけど、モバイルでは激重で使えなかったんだ。
>>920
クライアントに30fpsは死守せよと命じられたからね。まあクライアントも開発者も自分だけど…

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

結果、あんまり変わんない、自分の使い方が悪いのか…
925: 名前は開発中のものです。 [sage] 2020/01/07(火) 18:46:42.17 ID:zmI8ipko(1/4) AAS
インスペクターにセットしないで他のクラスを使うスクリプトの記述方法ってあるのでしょうか?
926
(1): 名前は開発中のものです。 [sage] 2020/01/07(火) 18:53:21.15 ID:N6ynwaTL(2/2) AAS
クラス継承じゃなくて?
927: 名前は開発中のものです。 [sage] 2020/01/07(火) 19:11:47.36 ID:zmI8ipko(2/4) AAS
>>926
なるほど!早速試してみます!
継承というのは: MonoBehaviorの部分を好きなクラス名に変えれば良いんですよね?
継承するクラスは一つしか選べないのでしょうか?
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
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が使えるから増えても問題なし
953
(1): 名前は開発中のものです。 [sage] 2020/01/09(木) 12:12:40.81 ID:65C13n6s(3/4) AAS
>>952
count <= 2 の 2の部分を変数.lengthにするという事でしょうか?思いつきませんでした!

もし宜しければ
一つでもfalseなら〜の書き方を教えて頂けませんか?
954: 名前は開発中のものです。 [sage] 2020/01/09(木) 12:23:32.35 ID:sMXCo4Ih(1) AAS
とりあえず動けばいいって感じ?
955
(1): 名前は開発中のものです。 [sage] 2020/01/09(木) 12:47:54.85 ID:8Z9bXpy1(1) AAS
>>953
https://i.gyazo.com/6f42dd3fc1e186cf49a71820a2aea731.png

956: 名前は開発中のものです。 [sage] 2020/01/09(木) 13:17:02.96 ID:AbIkBBD9(2/2) AAS
あとList型に入れると簡単にあるかないか取れるけど、どうなんだろね
https://i.gyazo.com/b64c1ec457ab732b3122b3b40da4ccd2.png

957
(1): 名前は開発中のものです。 [sage] 2020/01/09(木) 13:17:06.70 ID:h4Av5g/u(1) AAS
false、trueを入れるときに、変数にして+1、-1しとけばいいやん。0以下なら全部true。
不安なら、たまに時間の許す処理の時にチェックサム。
958: 名前は開発中のものです。 [sage] 2020/01/09(木) 13:17:26.76 ID:65C13n6s(4/4) AAS
>>955
ありがとうございます!
この短いコードの中に何故forとifの間に{が必要ないのか、(!b[i])が既にboolを表している等、普通に勉強してたら気付かない事ばかりで尊敬します。。
いつかこういうスマートで格好いいコードが書ける様に頑張ります!
959: 名前は開発中のものです。 [sage] 2020/01/09(木) 15:42:48.73 ID:ZRX+0Tcv(1) AAS
そこ省略すれば偉いってもんでもないから気をつけてな
コード長くなってくるとこういうとこはすっきり書いたほうが読みやすくはなるけど
960: 名前は開発中のものです。 [sage] 2020/01/09(木) 18:15:25.24 ID:IB4d3PvK(1) AAS
containsで行けるような

bool[] src = {true, true, false, true};
var list = new List<bool>();
list.AddRange(src);

bool item = false;

if (list.Contains(item)) { /////////////////////////////////////←これ
 System.Console.WriteLine("{0}が見つかりました", item);
} else {
 System.Console.WriteLine("{0}は見つかりませんでした", item);
}
961
(1): 名前は開発中のものです。 [sage] 2020/01/09(木) 21:40:32.44 ID:L8tG5HPm(1) AAS
>>950
ゲームでLinqは悪手
962: 名前は開発中のものです。 [sage] 2020/01/09(木) 23:26:31.33 ID:2OZqFXaj(1) AAS
>>945 946
サンキュー、そういうの教えてもらえるのは、本当に有意義だわ。
自分にはまだ早いので、しばらくベタで悪戦苦闘して経験値つんでからトライするわ。

現在、物理ゲームパッドで遊んでもらう想定で作ってるけど、一応スマホ画面操作に対応しようと思い、
新しい InputSystem で、Canvas の UI ボタンを使ってスマホ画面操作用のコントローラ作ったけど、
一つもコード書かずに物理ゲームパッド想定のゲームにマッピング出来た。InputSystem 凄い。

でもスマホ画面操作でBダッシュジャンプって超絶むずいね、物理コントローラーなら楽勝でBダッシュジャンプ出来るのに…
963
(1): 名前は開発中のものです。 [] 2020/01/10(金) 11:30:27.01 ID:08GLxpkh(1/4) AAS
>>961
よければこれの根拠教えてください
次のhp ではfor reach と大差ないとあるけど、何か他の要因?

https://qiita.com/nskydiving/items/c9c47c1e48ea365f8995
964: 名前は開発中のものです。 [sage] 2020/01/10(金) 12:14:16.98 ID:6FaPVqIC(1/3) AAS
>>963
LINQのメソッドに渡すデリゲートは取り扱いを間違えるとGC対象になるし
それに関してググって出てくる記事がほぼ全て検証も解釈も間違ってるから使うなというのは分かる
965: 名前は開発中のものです。 [] 2020/01/10(金) 12:38:04.63 ID:08GLxpkh(2/4) AAS
そう言うことですか
ガベージ関連だと初心者が考えなくても
まぁ、このスレ的には問題なさそうですね
966: 名前は開発中のものです。 [] 2020/01/10(金) 12:42:10.82 ID:08GLxpkh(3/4) AAS
だとすると「RINQ がゲームで悪手」というよりデリケート関連が全てのプログラムで悪手であって、メモリー関連の改善待ちとなるのかな?
c#のバージョンによる改善待ちになるのか
まぁ将来的な課題でしょうかね
967
(1): 名前は開発中のものです。 [sage] 2020/01/10(金) 12:57:56.83 ID:5Sf2RA1L(1/2) AAS
デリゲートがってよりも、Linqで色々繋げると色々コピーがされるしIEnum経由して列挙してくのがアレって話じゃないか?
968
(1): 名前は開発中のものです。 [sage] 2020/01/10(金) 14:23:25.79 ID:6FaPVqIC(2/3) AAS
>>967
IEnumerableは一つずつ取り出して処理する為の機能だから、
複製はされないしチェーンの数だけループ発生したりもしないよ

もちろんToArray()で新規配列は生成されるしOrderBy()でも内部で別のループが生まれてしまうがそれはそういう関数だからな
969
(2): 名前は開発中のものです。 [sage] 2020/01/10(金) 15:40:25.16 ID:5Sf2RA1L(2/2) AAS
>>968
いやもし5段階に組まれてたら下から見るとMoveNext5回呼ばれる事でやっと元のコレクションなりにたどり着くやん
あれインタフェースになってて1番下でのMoveNextでもとのに辿り着くっけ?
970
(1): 名前は開発中のものです。 [sage] 2020/01/10(金) 18:42:11.72 ID:6FaPVqIC(3/3) AAS
>>969
例えばこんなLINQがあるとするだろ
var seq = list.Where(A).Where(B).Where(C);
foreach(var n in seq) Console.WriteLine(n);

内部的にはこの処理と同じ
var tmp = list.GetEnumerator();
while(tmp.MoveNext()){
var n = tmp.Current;
if(!A(n)) continue;
if(!B(n)) continue;
if(!C(n)) continue;
Console.WriteLine(n);
}

取り出した要素をチェーンに繋いである関数に順番に渡してるだけ
要素一つにMoveNextを何回も呼んでるわけじゃない
971: 名前は開発中のものです。 [sage] 2020/01/10(金) 19:15:11.60 ID:7KV1Qvxy(1) AAS
Linqを許可しておくとRDBMSみたいに組むやついるからな
ゲームでそんな使い方されたら激重だから、使わないで統一するのが正解かと
972: 名前は開発中のものです。 [sage] 2020/01/10(金) 19:55:49.34 ID:Pn9TT9VK(1) AAS
linqの冒険…
973: 名前は開発中のものです。 [] 2020/01/10(金) 21:28:36.70 ID:08GLxpkh(4/4) AAS
>>957
これってプログラムするとどんなコードになるのかな?
いまいち浮かばないんだが
974
(1): 名前は開発中のものです。 [] 2020/01/10(金) 22:12:46.10 ID:lJeo0zER(1/2) AAS
3dでPlatform does not support compute shadersこんなエラーが出たんだがよくわかんないんだけどどういうこと?
ユニティちゃんが原因みたいだけどそれ以上はわからなかった
975: 名前は開発中のものです。 [sage] 2020/01/10(金) 22:17:28.65 ID:Fenu7wQ/(1) AAS
そのシェーダーを積んでないから描画できないぞゴルァ、かと。
976
(2): 名前は開発中のものです。 [sage] 2020/01/10(金) 22:52:24.52 ID:L/Emtw4P(1) AAS
>>970
そだっけ?その例だとWhereの第一引数に対してMoveNextすることでさらにその上のWhereが返すIEnumにアクセスってなるんじゃ?
Linqのコンパイラでそんな最適化しないでしょ
977
(2): 名前は開発中のものです。 [sage] 2020/01/10(金) 23:26:02.35 ID:XdY5fR78(1) AAS
>>976
遅延評価というものがあるし、そもそもWhereが返すのはIEnumでなく値そのものだからそこのところを誤解してる
978: 名前は開発中のものです。 [] 2020/01/10(金) 23:40:30.02 ID:lJeo0zER(2/2) AAS
>>974
ダメだわこれ、unityちゃんの配布物全部がshaderエラーになるわ
どうなってるんだ急に
979: 名前は開発中のものです。 [sage] 2020/01/11(土) 00:03:09.69 ID:L2PVl/EJ(1) AAS
Platformがなんちゃらっつってんだからそのへんじゃないの
980: 名前は開発中のものです。 [sage] 2020/01/11(土) 00:19:49.48 ID:MByoB+15(1) AAS
ビルドターゲットをWebGL辺りに変えたんだろ
あれはCompute Shaderが使えないからそんな感じのエラーが出る
981
(1): 名前は開発中のものです。 [sage] 2020/01/11(土) 01:41:24.01 ID:1/8GPuaw(1/7) AAS
>>977
ごめん何言ってるのかよく分からん

https://docs.microsoft.com/ja-jp/dotnet/api/system.linq.enumerable.where
982
(1): 名前は開発中のものです。 [sage] 2020/01/11(土) 01:45:41.87 ID:1/8GPuaw(2/7) AAS
WhereがIEnum返さなかったら次の人どうやって列挙するの
983
(1): 名前は開発中のものです。 [sage] 2020/01/11(土) 01:49:41.69 ID:1/8GPuaw(3/7) AAS
>>977
ついでに言うと遅延評価ってのはまさに後からMoveNextした時に評価されることを指すと思うぞこの場合
984
(1): 名前は開発中のものです。 [sage] 2020/01/11(土) 02:03:49.82 ID:eNMw2FnY(1/6) AAS
>>981-983
実行時の話な
var seq = list.Where(...)が返すのはIEnumだが、
実際にforeach(var n in seq)で遅延評価されるときには一つずつの値を返してるし、それが次のWhereに送られてる
ループの位置を見てみろ、配列は一回しか回ってないだろ?
985
(1): 名前は開発中のものです。 [sage] 2020/01/11(土) 02:17:15.69 ID:1/8GPuaw(4/7) AAS
>>984
いやだからその展開式みたいに実行時コードがなるって話あったっけ?
こんぱいられべるでLINQ特化で最適化しないとそうはできないと思うけど、いや俺が知らないだけかもなのでこう最適化されるよーってソースあるなら教えてくれ
986: 名前は開発中のものです。 [sage] 2020/01/11(土) 02:34:07.57 ID:eNMw2FnY(2/6) AAS
>>985
yieldのごく普通の振る舞いなんだからイテレーター使ったことあるなら分かるだろ?

ちなみに具体的なソースはこれな
https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Where.cs
987
(1): 名前は開発中のものです。 [sage] 2020/01/11(土) 03:28:33.54 ID:MfNXfEnO(1) AAS
コルーチンについて質問させてください。

void Start() {
StartCoroutine(A());
}

void Update()
{
Debug.Log("update");
}

IEnumerator A()
{
Debug.Log("A start");

for (int i = 0; i < 10; i++)
{
Debug.Log("A:"+i);
yield return null;
}
}

とやって動かすと、ログが
A Start
A:0
start end
update
update
A:1
になるんですが、最初のUpdateのあとにコルーチンが実行されないのはどうしてですか?
988
(1): 名前は開発中のものです。 [sage] 2020/01/11(土) 03:42:34.65 ID:eNMw2FnY(3/6) AAS
とりあえず>>969>>976から読み取ると、LINQで繋がれたメソッドは全部独立したIEnumerableを返してるような誤解をしてるんだと思う
実際は宣言時にチェーンの最後にあるメソッドが一つのIEnumerableを返すだけだし、間にある他のメソッドは最後のメソッドがデリゲートとして一括で実行する
だからMoveNextは一つの要素に一回ずつしか基本的に呼ばれず、従ってループも一回だけ
これで納得出来ないならもう5個チェーン繋げたら5回ループされてると思っても良いよ、別にそれでも実害は一切無い
989
(1): 名前は開発中のものです。 [sage] 2020/01/11(土) 11:12:22.12 ID:1/8GPuaw(5/7) AAS
>>988
いやごめん、むしろお前がなんでそんな理解してるのか分からん。
それはイテレーターを書くためのシンタックスシュガーであって、結局はEnumeから列挙するためにMoveMextやら何やら呼ぶことになると思うが。
そもそもお前が言ってるようなループなんてコード上は展開されないだろ
あくまでもEnumeのMoveNextやらなんやらで列挙されてくだけで。つか自分があげたWhereのどこ見りゃ途中のものも全部前のが返すEnumeを第一引数として受け取りEnumeを返すってのが明らかだと思うが。
その上でWhereを続けた時などにC#上もしくはコンパイラ生成時に最適化がなされる事はあり得るかも?とは思うけどそう言うこと言いたいんじゃないよね
990: 名前は開発中のものです。 [sage] 2020/01/11(土) 11:45:27.42 ID:GoAReVTm(1/2) AAS
>>987
>最初のUpdateのあとにコルーチンが実行されないのは
最初のUpdateはスタート直後に動くんだけど、Updateの間隔は不定なので、最初のスタートのオーバーヘッドがUpdateを遅延させてしまい2回ログが出力されたのかと思う
これを修正するには
Update を FixedUpdate にし
yield return null を yield return new WaitForFixedUpdate() にする事で解決は出来る

UpdateとFixedUpdate の動作の違いによる処理の仕様なのかな、一言で言うと
991
(1): 名前は開発中のものです。 [sage] 2020/01/11(土) 12:19:43.31 ID:eNMw2FnY(4/6) AAS
>>989
率直に言ってお前は何を主張したいの?
まずそれ教えてくれ
そのレスを読むだけだとわざわざ実装のURLまで見せたのにソースも読めない子なんだぁとしか思えん
992: 名前は開発中のものです。 [sage] 2020/01/11(土) 12:28:16.42 ID:SODcWRcR(1) AAS
オーケー、乳首相撲で決めよう
二人とも乳首出して
993
(2): 名前は開発中のものです。 [sage] 2020/01/11(土) 12:34:46.58 ID:1/8GPuaw(6/7) AAS
>>991
最初はなんか最適化かなんか俺の知らないのあるの?って感じだったけど、今はなんか勘違いしてる人に諭してあげようかなと思ったけど無駄っぽいからもうどうでもいいかな

最後に言っとくけど、おまいのあげたイテレーターのソース、foreachが一つしか展開されないとか言ってるけど思いっっっっっきり勘違いしてると思うよ
Whereのイテレータ内で展開してるforeachはソースのイナミュレーターを回してるけどそれは前のWhereが返すイナミュラブルを回してて、それはまた別にforeach x展開してるイテレーターによるものだよ。
と言ってそれはシンタックスシュガーによるものだからforeachが何重になってると言うのともまた違う
994: 名前は開発中のものです。 [sage] 2020/01/11(土) 12:40:12.52 ID:Y9mLoGJE(1) AAS
初心者スレでイキんなやハゲ
995
(2): 名前は開発中のものです。 [sage] 2020/01/11(土) 12:46:12.11 ID:wPvGtAaQ(1) AAS
敵に攻撃するとダメージが数字でポップアップされるという処理を

var pos = 対象の敵オブジェクト.GetComponent<Transform>()して、
ダメージのテキストをプレハブ化した物をInstantiate(プレハブ, pos)で生成したのですが

ダメージのプレハブが敵オブジェクトの子になっているので、敵オブジェクトのHPが0になってDestroyされた瞬間に一緒に消えてしまいます

生成するプレハブの位置を任意のゲームオブジェクトのtransformに重ねるが、子にはしないみたいな事はどうすれば出来るのでしょうか?
transformから位置(座標?)だけを取得する方法がわかれば応用が色々出来そうなのですが
996
(1): 名前は開発中のものです。 [sage] 2020/01/11(土) 13:01:07.21 ID:eNMw2FnY(5/6) AAS
>>993
だろ、やっぱり入れ子になってると勘違いしてるよな?

サンプルソース書いてあげたから見てみな
IL_009aのループ一度しか無いし中身の取り出しも一回だけ
その後でLINQメソッドに渡されたデリゲートを適用してそのままループ内の処理に進んでる
https://imgur.com/a/E99qR2O

997: 名前は開発中のものです。 [sage] 2020/01/11(土) 13:08:04.10 ID:ftB0znZP(1) AAS
>>995
ダメージテキストのオブジェクトに、新しいスクリプトをつける。
そのスクリプトのstartに、親を放棄させるメソッドを入れる。
ググリワード
transform.parent
998: 名前は開発中のものです。 [sage] 2020/01/11(土) 13:13:14.92 ID:GoAReVTm(2/2) AAS
>>995
Instantiateする際に
GameObject obj =Instantiate(プレハブ, pos)
これでGameObject取得できるので、その後すぐに親を外す
obj.transform.paerent =null
これで敵の子として生成した後に独立する
999: 名前は開発中のものです。 [sage] 2020/01/11(土) 13:13:52.35 ID:1/8GPuaw(7/7) AAS
>>996
マジで大丈夫?
そりゃそこのforeachがループにされてるだけでそこにループがネストするなんて話はこれっぽっちもしてないんだが
>>993でもそう説明してるけど分からん?マジでシンタックスシュガーによるイテレーターの実装理解できてないだろお前
1000: 名前は開発中のものです。 [] 2020/01/11(土) 13:17:05.48 ID:eNMw2FnY(6/6) AAS
頭悪い子だな
1001
(1): 1001 [] ID:Thread(1/2) AAS
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 247日 22時間 41分 28秒
1002
(1): 1002 [] ID:Thread(2/2) AAS
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。

───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.055s*