[過去ログ]
【ゲームエンジン】Unity初心者質問スレBuild2 (1002レス)
【ゲームエンジン】Unity初心者質問スレBuild2 http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
967: 名前は開発中のものです。 [sage] 2020/01/10(金) 12:57:56.83 ID:5Sf2RA1L デリゲートがってよりも、Linqで色々繋げると色々コピーがされるしIEnum経由して列挙してくのがアレって話じゃないか? http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/967
968: 名前は開発中のものです。 [sage] 2020/01/10(金) 14:23:25.79 ID:6FaPVqIC >>967 IEnumerableは一つずつ取り出して処理する為の機能だから、 複製はされないしチェーンの数だけループ発生したりもしないよ もちろんToArray()で新規配列は生成されるしOrderBy()でも内部で別のループが生まれてしまうがそれはそういう関数だからな http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/968
969: 名前は開発中のものです。 [sage] 2020/01/10(金) 15:40:25.16 ID:5Sf2RA1L >>968 いやもし5段階に組まれてたら下から見るとMoveNext5回呼ばれる事でやっと元のコレクションなりにたどり着くやん あれインタフェースになってて1番下でのMoveNextでもとのに辿り着くっけ? http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/969
970: 名前は開発中のものです。 [sage] 2020/01/10(金) 18:42:11.72 ID:6FaPVqIC >>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を何回も呼んでるわけじゃない http://
mevius.5ch.net/test/read.cgi/gamedev/1557293737/970
971: 名前は開発中のものです。 [sage] 2020/01/10(金) 19:15:11.60 ID:7KV1Qvxy Linqを許可しておくとRDBMSみたいに組むやついるからな ゲームでそんな使い方されたら激重だから、使わないで統一するのが正解かと http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/971
972: 名前は開発中のものです。 [sage] 2020/01/10(金) 19:55:49.34 ID:Pn9TT9VK linqの冒険… http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/972
973: 名前は開発中のものです。 [] 2020/01/10(金) 21:28:36.70 ID:08GLxpkh >>957 これってプログラムするとどんなコードになるのかな? いまいち浮かばないんだが http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/973
974: 名前は開発中のものです。 [] 2020/01/10(金) 22:12:46.10 ID:lJeo0zER 3dでPlatform does not support compute shadersこんなエラーが出たんだがよくわかんないんだけどどういうこと? ユニティちゃんが原因みたいだけどそれ以上はわからなかった http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/974
975: 名前は開発中のものです。 [sage] 2020/01/10(金) 22:17:28.65 ID:Fenu7wQ/ そのシェーダーを積んでないから描画できないぞゴルァ、かと。 http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/975
976: 名前は開発中のものです。 [sage] 2020/01/10(金) 22:52:24.52 ID:L/Emtw4P >>970 そだっけ?その例だとWhereの第一引数に対してMoveNextすることでさらにその上のWhereが返すIEnumにアクセスってなるんじゃ? Linqのコンパイラでそんな最適化しないでしょ http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/976
977: 名前は開発中のものです。 [sage] 2020/01/10(金) 23:26:02.35 ID:XdY5fR78 >>976 遅延評価というものがあるし、そもそもWhereが返すのはIEnumでなく値そのものだからそこのところを誤解してる http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/977
978: 名前は開発中のものです。 [] 2020/01/10(金) 23:40:30.02 ID:lJeo0zER >>974 ダメだわこれ、unityちゃんの配布物全部がshaderエラーになるわ どうなってるんだ急に http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/978
979: 名前は開発中のものです。 [sage] 2020/01/11(土) 00:03:09.69 ID:L2PVl/EJ Platformがなんちゃらっつってんだからそのへんじゃないの http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/979
980: 名前は開発中のものです。 [sage] 2020/01/11(土) 00:19:49.48 ID:MByoB+15 ビルドターゲットをWebGL辺りに変えたんだろ あれはCompute Shaderが使えないからそんな感じのエラーが出る http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/980
981: 名前は開発中のものです。 [sage] 2020/01/11(土) 01:41:24.01 ID:1/8GPuaw >>977 ごめん何言ってるのかよく分からん https://docs.microsoft.com/ja-jp/dotnet/api/system.linq.enumerable.where http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/981
982: 名前は開発中のものです。 [sage] 2020/01/11(土) 01:45:41.87 ID:1/8GPuaw WhereがIEnum返さなかったら次の人どうやって列挙するの http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/982
983: 名前は開発中のものです。 [sage] 2020/01/11(土) 01:49:41.69 ID:1/8GPuaw >>977 ついでに言うと遅延評価ってのはまさに後からMoveNextした時に評価されることを指すと思うぞこの場合 http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/983
984: 名前は開発中のものです。 [sage] 2020/01/11(土) 02:03:49.82 ID:eNMw2FnY >>981-983 実行時の話な var seq = list.Where(...)が返すのはIEnumだが、 実際にforeach(var n in seq)で遅延評価されるときには一つずつの値を返してるし、それが次のWhereに送られてる ループの位置を見てみろ、配列は一回しか回ってないだろ? http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/984
985: 名前は開発中のものです。 [sage] 2020/01/11(土) 02:17:15.69 ID:1/8GPuaw >>984 いやだからその展開式みたいに実行時コードがなるって話あったっけ? こんぱいられべるでLINQ特化で最適化しないとそうはできないと思うけど、いや俺が知らないだけかもなのでこう最適化されるよーってソースあるなら教えてくれ http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/985
986: 名前は開発中のものです。 [sage] 2020/01/11(土) 02:34:07.57 ID:eNMw2FnY >>985 yieldのごく普通の振る舞いなんだからイテレーター使ったことあるなら分かるだろ? ちなみに具体的なソースはこれな https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Where.cs http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/986
987: 名前は開発中のものです。 [sage] 2020/01/11(土) 03:28:33.54 ID:MfNXfEnO コルーチンについて質問させてください。 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のあとにコルーチンが実行されないのはどうしてですか? http://mevius.5ch.
net/test/read.cgi/gamedev/1557293737/987
988: 名前は開発中のものです。 [sage] 2020/01/11(土) 03:42:34.65 ID:eNMw2FnY とりあえず>>969と>>976から読み取ると、LINQで繋がれたメソッドは全部独立したIEnumerableを返してるような誤解をしてるんだと思う 実際は宣言時にチェーンの最後にあるメソッドが一つのIEnumerableを返すだけだし、間にある他のメソッドは最後のメソッドがデリゲートとして一括で実行する だからMoveNextは一つの要素に一回ずつしか基本的に呼ばれず、従ってループも一回だけ これで納得出来ないならもう5個チェーン繋げたら5回ループされてると思っても
良いよ、別にそれでも実害は一切無い http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/988
989: 名前は開発中のものです。 [sage] 2020/01/11(土) 11:12:22.12 ID:1/8GPuaw >>988 いやごめん、むしろお前がなんでそんな理解してるのか分からん。 それはイテレーターを書くためのシンタックスシュガーであって、結局はEnumeから列挙するためにMoveMextやら何やら呼ぶことになると思うが。 そもそもお前が言ってるようなループなんてコード上は展開されないだろ あくまでもEnumeのMoveNextやらなんやらで列挙されてくだけで。つか自分があげたWhereのどこ見りゃ途中のものも全部前のが返すEnumeを第一引数として受け取りEnumeを返すって
のが明らかだと思うが。 その上でWhereを続けた時などにC#上もしくはコンパイラ生成時に最適化がなされる事はあり得るかも?とは思うけどそう言うこと言いたいんじゃないよね http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/989
990: 名前は開発中のものです。 [sage] 2020/01/11(土) 11:45:27.42 ID:GoAReVTm >>987 >最初のUpdateのあとにコルーチンが実行されないのは 最初のUpdateはスタート直後に動くんだけど、Updateの間隔は不定なので、最初のスタートのオーバーヘッドがUpdateを遅延させてしまい2回ログが出力されたのかと思う これを修正するには Update を FixedUpdate にし yield return null を yield return new WaitForFixedUpdate() にする事で解決は出来る UpdateとFixedUpdate の動作の違いによる処理の仕様なのかな、一言で言うと http://m
evius.5ch.net/test/read.cgi/gamedev/1557293737/990
991: 名前は開発中のものです。 [sage] 2020/01/11(土) 12:19:43.31 ID:eNMw2FnY >>989 率直に言ってお前は何を主張したいの? まずそれ教えてくれ そのレスを読むだけだとわざわざ実装のURLまで見せたのにソースも読めない子なんだぁとしか思えん http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/991
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 11 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.019s