ゲームエンジン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←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。
探検
【ゲームエンジン】Unity初心者質問スレBuild2
レス数が1000を超えています。これ以上書き込みはできません。
2019/05/08(水) 14:35:37.58ID:VDHuk8YT
910名前は開発中のものです。
2020/01/05(日) 18:55:55.72ID:UKiA3e/s911名前は開発中のものです。
2020/01/05(日) 19:03:19.71ID:Vyi2hsuy 浦島太郎かよ
いまどきキャリアもMVNOも3GB以上しか売ってねーよ
いまどきキャリアもMVNOも3GB以上しか売ってねーよ
912名前は開発中のものです。
2020/01/05(日) 19:08:43.34ID:oPeOUZBr ID:UKiA3e/sのビルドターゲットってバージョン何?
913名前は開発中のものです。
2020/01/05(日) 19:13:04.30ID:UK9nGc23 荒野行動がさらに快適に遊べるようになるんやなあ
914名前は開発中のものです。
2020/01/05(日) 19:15:37.63ID:Vyi2hsuy SIMフリーの低スペ機種とか年寄り専用スマホが3GB
3大キャリアが主力で売ってるのは4GBと6GBだからな
3大キャリアが主力で売ってるのは4GBと6GBだからな
915名前は開発中のものです。
2020/01/05(日) 19:20:54.14ID:N5s8+lOM916名前は開発中のものです。
2020/01/05(日) 19:50:14.20ID:IxHDmQr7 書込みがガラプーおじさんだったら笑う
917名前は開発中のものです。
2020/01/05(日) 20:47:45.09ID:bo4vBboO 自己レスだけど、青緑透明シェーダー作ったが、普通のサーフェイスシェーダーだと
カメラに付けても半透明の視界が得られず、フラグメントシェーダで青緑透明シェーダーを作成した。
Windows 10 開発機でそこそこ動いて、Android 9 にビルド実行したら、激遅というかまともに動かなかった…
まあ、シェーダーの基本の "き" くらいは体験できたので面白かったけど。
自作シェーダーでも無理となるとキャンバス前面に "画像" 貼り付け? 明らかに処理遅くなるんだよな。
カメラに付けても半透明の視界が得られず、フラグメントシェーダで青緑透明シェーダーを作成した。
Windows 10 開発機でそこそこ動いて、Android 9 にビルド実行したら、激遅というかまともに動かなかった…
まあ、シェーダーの基本の "き" くらいは体験できたので面白かったけど。
自作シェーダーでも無理となるとキャンバス前面に "画像" 貼り付け? 明らかに処理遅くなるんだよな。
918弟子
2020/01/05(日) 21:30:29.38ID:8EV9fu0v さぁ900越えて加速したね
完走まであと少し愚痴も雑談も歓迎!
頑張っていきましょう!
完走まであと少し愚痴も雑談も歓迎!
頑張っていきましょう!
919名前は開発中のものです。
2020/01/06(月) 00:01:07.52ID:dCLcpxvc >>917
ぽストプロセスでやるべき?詳しく知らんけど
ぽストプロセスでやるべき?詳しく知らんけど
920名前は開発中のものです。
2020/01/06(月) 09:42:41.75ID:gkYFwUQg 水の中だし動きも遅くなっていいんじゃね
921名前は開発中のものです。
2020/01/06(月) 12:00:11.26ID:LKBBcVzd Unity関連で初笑い
922名前は開発中のものです。
2020/01/06(月) 12:26:51.42ID:MVMM0EnC 課金ボタンだけ反応しねえ!
923名前は開発中のものです。
2020/01/07(火) 16:39:17.47ID:N6ynwaTL 反応したと思ったら失敗表示しか出ねえ!
924名前は開発中のものです。
2020/01/07(火) 18:44:04.37ID:oElcyruO925名前は開発中のものです。
2020/01/07(火) 18:46:42.17ID:zmI8ipko インスペクターにセットしないで他のクラスを使うスクリプトの記述方法ってあるのでしょうか?
926名前は開発中のものです。
2020/01/07(火) 18:53:21.15ID:N6ynwaTL クラス継承じゃなくて?
927名前は開発中のものです。
2020/01/07(火) 19:11:47.36ID:zmI8ipko928名前は開発中のものです。
2020/01/07(火) 19:15:14.41ID:zmI8ipko C# 継承 複数で検索したら一応解決しました!
調べればすぐ分かることを聞いてしまってごめんなさい。
ありがとうございました!
調べればすぐ分かることを聞いてしまってごめんなさい。
ありがとうございました!
929名前は開発中のものです。
2020/01/07(火) 19:34:51.14ID:mTxkaJC9 聞く方もわかっていなければ、答える方も分かっていない典型だな
930名前は開発中のものです。
2020/01/07(火) 20:11:34.92ID:uM5ClZyr 質問失礼します
3人などの複数人で開発する場合に自分のみが有料アセットを所有しておりそれを使いたい場合のプロジェクトの管理方法はどうするのが一般的ですか?
3人などの複数人で開発する場合に自分のみが有料アセットを所有しておりそれを使いたい場合のプロジェクトの管理方法はどうするのが一般的ですか?
931名前は開発中のものです。
2020/01/07(火) 20:25:27.78ID:d7S3IRng932名前は開発中のものです。
2020/01/07(火) 21:31:22.74ID:oElcyruO >>931
アドバイスありがとう。
詳細プロファイルみたら、どうやら処理の中身で gameObject.name.Contains("Hoge") とか
多用してるとこが処理コストが高いっぽい。
地道にプロファイラ見て、重そうな箇所をつぶしていくしかなさそうだね。
自分の使い方がこなれてないので、UniRX 自体は良さそうだと思った。
アドバイスありがとう。
詳細プロファイルみたら、どうやら処理の中身で gameObject.name.Contains("Hoge") とか
多用してるとこが処理コストが高いっぽい。
地道にプロファイラ見て、重そうな箇所をつぶしていくしかなさそうだね。
自分の使い方がこなれてないので、UniRX 自体は良さそうだと思った。
933名前は開発中のものです。
2020/01/07(火) 22:21:07.64ID:zmI8ipko >>929
確かにわかっていないので今まで通りpublicかシリアライズでインスペクターに表示して他のクラスを貼り付けたオブジェクトを入れています。
なにかこの作業を省略出来る方法はあるのでしょうか?
継承について聞けて調べた事は今後活かせる事もありそうなので感謝しています!
確かにわかっていないので今まで通りpublicかシリアライズでインスペクターに表示して他のクラスを貼り付けたオブジェクトを入れています。
なにかこの作業を省略出来る方法はあるのでしょうか?
継承について聞けて調べた事は今後活かせる事もありそうなので感謝しています!
934名前は開発中のものです。
2020/01/08(水) 00:37:03.99ID:Hvk3XDsR Updateの中でFindはさすがにStartでやってキャッシュしないとそりゃそうなるな……
935名前は開発中のものです。
2020/01/08(水) 04:02:14.62ID:yDUxVkXo Unityを触り始めた時、プレイヤーやエネミーなど、画面に表示するキャラクターは、GameObjectを継承した子クラスとして作るのかと思っていたのですが、そうではないですよね。
この様なプログラムに初めて触れるので今でも違和感があるのですが、何故この様な仕様になっているのでしょうか?
また、この様な実装方法は、デザインパターンで言うと、何パターンになるのでしょうか?
ご存知の方、いらっしゃいましたら、教えて頂けると嬉しいです。
お願い致します。
この様なプログラムに初めて触れるので今でも違和感があるのですが、何故この様な仕様になっているのでしょうか?
また、この様な実装方法は、デザインパターンで言うと、何パターンになるのでしょうか?
ご存知の方、いらっしゃいましたら、教えて頂けると嬉しいです。
お願い致します。
936名前は開発中のものです。
2020/01/08(水) 04:34:56.94ID:7cplqCOI937名前は開発中のものです。
2020/01/08(水) 07:12:01.63ID:STEsEzVT 継承が嫌ならインターフェース定義すればいいじゃない
938名前は開発中のものです。
2020/01/08(水) 21:12:40.84ID:c/TDM3Pm >>935
MonoBehaviour を継承して、Update() とか FixedUpdate() とか様々なフックハンドラを実装してく作法だよ。
しいて言えば、GoFのObserver パターンに近いんじゃない。Unity 内部の実装は違うらしけど。
GameObject を継承するんじゃなくて、GameObject に上記の MonoBehaviour 継承クラスを紐づけて動作をさせる。
この仕様だと、GameObject が "複数"の MonoBehaviour 継承クラスの動作を行うことが出来る。
C# は多重継承出来ないでしょ、Unity よく考えられてるシステムだよね。
MonoBehaviour を継承して、Update() とか FixedUpdate() とか様々なフックハンドラを実装してく作法だよ。
しいて言えば、GoFのObserver パターンに近いんじゃない。Unity 内部の実装は違うらしけど。
GameObject を継承するんじゃなくて、GameObject に上記の MonoBehaviour 継承クラスを紐づけて動作をさせる。
この仕様だと、GameObject が "複数"の MonoBehaviour 継承クラスの動作を行うことが出来る。
C# は多重継承出来ないでしょ、Unity よく考えられてるシステムだよね。
939名前は開発中のものです。
2020/01/08(水) 21:25:51.83ID:c/TDM3Pm 自分も最初 Unity のスクリプトに違和感というか、なんだろうこれは? と思った。
Unity 以外の他言語経験者というか、自分も職業プログラマの端くれなんで、
Player クラスとか、Enemy クラスを定義するんだよな。とか勝手に思って最初そのように書こうとしてた。
でも、Unity には GameObject という規定クラスがあり、それらに対する作用を MonoBehaviour 継承クラスに
記述して GameObject にアタッチ(紐づけ)するという仕組みを理解してからは、腑に落ちたというか納得出来た。
Unity 以外の他言語経験者というか、自分も職業プログラマの端くれなんで、
Player クラスとか、Enemy クラスを定義するんだよな。とか勝手に思って最初そのように書こうとしてた。
でも、Unity には GameObject という規定クラスがあり、それらに対する作用を MonoBehaviour 継承クラスに
記述して GameObject にアタッチ(紐づけ)するという仕組みを理解してからは、腑に落ちたというか納得出来た。
940名前は開発中のものです。
2020/01/08(水) 21:42:58.57ID:c/TDM3Pm 書いてて思ったけど、GameObject に拡張メソッド書けば良くね? と思って調べたら、やっぱりそうしてる人いた。
処理コストとか気になるけど、静的 Utuil クラスとか書くより、 拡張メソッド書いたらスマートに記述出来る箇所が山ほどある。
>>935 サンキュー めちゃめちゃ良い気づきを頂いたわ。
処理コストとか気になるけど、静的 Utuil クラスとか書くより、 拡張メソッド書いたらスマートに記述出来る箇所が山ほどある。
>>935 サンキュー めちゃめちゃ良い気づきを頂いたわ。
941名前は開発中のものです。
2020/01/08(水) 22:04:58.83ID:c/TDM3Pm なるほど。GameObject に MonoBehaviour 継承クラス"型" の変数を自由に設定出来ると。
その "型" を "Component" と言いますと。そして、GameObject.GetComponent<型> で自由に変数を取得出来ますと。
最初からそう教えてくれればいいのに。
その "型" を "Component" と言いますと。そして、GameObject.GetComponent<型> で自由に変数を取得出来ますと。
最初からそう教えてくれればいいのに。
942名前は開発中のものです。
2020/01/08(水) 22:07:01.56ID:c/TDM3Pm Unity 良いね。ほんと好きになったわ。
元々 C# が超強力な言語なんで、とにかくプログラミングが楽しい。
元々 C# が超強力な言語なんで、とにかくプログラミングが楽しい。
943名前は開発中のものです。
2020/01/08(水) 22:18:19.80ID:HHbGzUHS ここはお前の日記帳ちゃうで
944名前は開発中のものです。
2020/01/08(水) 23:36:42.85ID:Le5pG30A >>942
まあ、みんな一度はそう思うんだけど、ゲームを作ってる以上、次はC#はもちろんUnityならではボトルネックの最適化でつまずくんだよなー
まあ、みんな一度はそう思うんだけど、ゲームを作ってる以上、次はC#はもちろんUnityならではボトルネックの最適化でつまずくんだよなー
945名前は開発中のものです。
2020/01/09(木) 01:04:08.75ID:9Vcb+knu そこでJobSystem,Burst,ECSですよ
946名前は開発中のものです。
2020/01/09(木) 02:30:18.61ID:mwK+f391 DOTSはまだ早い
947名前は開発中のものです。
2020/01/09(木) 10:09:19.78ID:kIaaP1cE JOBSYSREMとかビジネス啓蒙系のサイトっぽい名前
948名前は開発中のものです。
2020/01/09(木) 10:23:49.72ID:65C13n6s boolの配列で中身の全てがtrueなら○○するという処理はどうやって書けばスマートですか?
今は配列の要素数が3しかないのでifを使った分岐で力技で動かせて居ますが数が増えたときの事を想像すると頭が痛いです。
今は配列の要素数が3しかないのでifを使った分岐で力技で動かせて居ますが数が増えたときの事を想像すると頭が痛いです。
949名前は開発中のものです。
2020/01/09(木) 10:47:15.13ID:9CjsCJlx if文を3つ書いてるということならforeach使おう
950名前は開発中のものです。
2020/01/09(木) 11:16:55.09ID:bvBlalIf 配列数が固定ならFlags付けたenumでビットフラグ使う
動的に増減するなら設計がおかしいんだがLINQのAllを使えば簡単に書ける
動的に増減するなら設計がおかしいんだがLINQのAllを使えば簡単に書ける
951名前は開発中のものです。
2020/01/09(木) 11:32:20.48ID:65C13n6s for(int count = 0; count <= 2; count++)
{
if(配列[count]== true)
{
変数++;
}
}
if(変数 == 3)
{
処理
}
にしてみたのですが微妙ですか?
foreachとlinqはまだ使い方がわからないのですが調べてみます。
{
if(配列[count]== true)
{
変数++;
}
}
if(変数 == 3)
{
処理
}
にしてみたのですが微妙ですか?
foreachとlinqはまだ使い方がわからないのですが調べてみます。
952名前は開発中のものです。
2020/01/09(木) 12:00:30.94ID:AbIkBBD9 1つでもfalseならリターンすればいい
そうすりゃ無駄な変数いらんよ
あとfor で回す場合、<変数.lengthが使えるから増えても問題なし
そうすりゃ無駄な変数いらんよ
あとfor で回す場合、<変数.lengthが使えるから増えても問題なし
953名前は開発中のものです。
2020/01/09(木) 12:12:40.81ID:65C13n6s954名前は開発中のものです。
2020/01/09(木) 12:23:32.35ID:sMXCo4Ih とりあえず動けばいいって感じ?
955名前は開発中のものです。
2020/01/09(木) 12:47:54.85ID:8Z9bXpy1956名前は開発中のものです。
2020/01/09(木) 13:17:02.96ID:AbIkBBD9 あとList型に入れると簡単にあるかないか取れるけど、どうなんだろね
https://i.gyazo.com/b64c1ec457ab732b3122b3b40da4ccd2.png
https://i.gyazo.com/b64c1ec457ab732b3122b3b40da4ccd2.png
957名前は開発中のものです。
2020/01/09(木) 13:17:06.70ID:h4Av5g/u false、trueを入れるときに、変数にして+1、-1しとけばいいやん。0以下なら全部true。
不安なら、たまに時間の許す処理の時にチェックサム。
不安なら、たまに時間の許す処理の時にチェックサム。
958名前は開発中のものです。
2020/01/09(木) 13:17:26.76ID:65C13n6s >>955
ありがとうございます!
この短いコードの中に何故forとifの間に{が必要ないのか、(!b[i])が既にboolを表している等、普通に勉強してたら気付かない事ばかりで尊敬します。。
いつかこういうスマートで格好いいコードが書ける様に頑張ります!
ありがとうございます!
この短いコードの中に何故forとifの間に{が必要ないのか、(!b[i])が既にboolを表している等、普通に勉強してたら気付かない事ばかりで尊敬します。。
いつかこういうスマートで格好いいコードが書ける様に頑張ります!
959名前は開発中のものです。
2020/01/09(木) 15:42:48.73ID:ZRX+0Tcv そこ省略すれば偉いってもんでもないから気をつけてな
コード長くなってくるとこういうとこはすっきり書いたほうが読みやすくはなるけど
コード長くなってくるとこういうとこはすっきり書いたほうが読みやすくはなるけど
960名前は開発中のものです。
2020/01/09(木) 18:15:25.24ID:IB4d3PvK 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);
}
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名前は開発中のものです。
2020/01/09(木) 21:40:32.44ID:L8tG5HPm >>950
ゲームでLinqは悪手
ゲームでLinqは悪手
962名前は開発中のものです。
2020/01/09(木) 23:26:31.33ID:2OZqFXaj >>945, 946
サンキュー、そういうの教えてもらえるのは、本当に有意義だわ。
自分にはまだ早いので、しばらくベタで悪戦苦闘して経験値つんでからトライするわ。
現在、物理ゲームパッドで遊んでもらう想定で作ってるけど、一応スマホ画面操作に対応しようと思い、
新しい InputSystem で、Canvas の UI ボタンを使ってスマホ画面操作用のコントローラ作ったけど、
一つもコード書かずに物理ゲームパッド想定のゲームにマッピング出来た。InputSystem 凄い。
でもスマホ画面操作でBダッシュジャンプって超絶むずいね、物理コントローラーなら楽勝でBダッシュジャンプ出来るのに…
サンキュー、そういうの教えてもらえるのは、本当に有意義だわ。
自分にはまだ早いので、しばらくベタで悪戦苦闘して経験値つんでからトライするわ。
現在、物理ゲームパッドで遊んでもらう想定で作ってるけど、一応スマホ画面操作に対応しようと思い、
新しい InputSystem で、Canvas の UI ボタンを使ってスマホ画面操作用のコントローラ作ったけど、
一つもコード書かずに物理ゲームパッド想定のゲームにマッピング出来た。InputSystem 凄い。
でもスマホ画面操作でBダッシュジャンプって超絶むずいね、物理コントローラーなら楽勝でBダッシュジャンプ出来るのに…
963名前は開発中のものです。
2020/01/10(金) 11:30:27.01ID:08GLxpkh >>961
よければこれの根拠教えてください
次のhp ではfor reach と大差ないとあるけど、何か他の要因?
https://qiita.com/nskydiving/items/c9c47c1e48ea365f8995
よければこれの根拠教えてください
次のhp ではfor reach と大差ないとあるけど、何か他の要因?
https://qiita.com/nskydiving/items/c9c47c1e48ea365f8995
964名前は開発中のものです。
2020/01/10(金) 12:14:16.98ID:6FaPVqIC965名前は開発中のものです。
2020/01/10(金) 12:38:04.63ID:08GLxpkh そう言うことですか
ガベージ関連だと初心者が考えなくても
まぁ、このスレ的には問題なさそうですね
ガベージ関連だと初心者が考えなくても
まぁ、このスレ的には問題なさそうですね
966名前は開発中のものです。
2020/01/10(金) 12:42:10.82ID:08GLxpkh だとすると「RINQ がゲームで悪手」というよりデリケート関連が全てのプログラムで悪手であって、メモリー関連の改善待ちとなるのかな?
c#のバージョンによる改善待ちになるのか
まぁ将来的な課題でしょうかね
c#のバージョンによる改善待ちになるのか
まぁ将来的な課題でしょうかね
967名前は開発中のものです。
2020/01/10(金) 12:57:56.83ID:5Sf2RA1L デリゲートがってよりも、Linqで色々繋げると色々コピーがされるしIEnum経由して列挙してくのがアレって話じゃないか?
968名前は開発中のものです。
2020/01/10(金) 14:23:25.79ID:6FaPVqIC >>967
IEnumerableは一つずつ取り出して処理する為の機能だから、
複製はされないしチェーンの数だけループ発生したりもしないよ
もちろんToArray()で新規配列は生成されるしOrderBy()でも内部で別のループが生まれてしまうがそれはそういう関数だからな
IEnumerableは一つずつ取り出して処理する為の機能だから、
複製はされないしチェーンの数だけループ発生したりもしないよ
もちろんToArray()で新規配列は生成されるしOrderBy()でも内部で別のループが生まれてしまうがそれはそういう関数だからな
969名前は開発中のものです。
2020/01/10(金) 15:40:25.16ID:5Sf2RA1L >>968
いやもし5段階に組まれてたら下から見るとMoveNext5回呼ばれる事でやっと元のコレクションなりにたどり着くやん
あれインタフェースになってて1番下でのMoveNextでもとのに辿り着くっけ?
いやもし5段階に組まれてたら下から見るとMoveNext5回呼ばれる事でやっと元のコレクションなりにたどり着くやん
あれインタフェースになってて1番下でのMoveNextでもとのに辿り着くっけ?
970名前は開発中のものです。
2020/01/10(金) 18:42:11.72ID: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を何回も呼んでるわけじゃない
例えばこんな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名前は開発中のものです。
2020/01/10(金) 19:15:11.60ID:7KV1Qvxy Linqを許可しておくとRDBMSみたいに組むやついるからな
ゲームでそんな使い方されたら激重だから、使わないで統一するのが正解かと
ゲームでそんな使い方されたら激重だから、使わないで統一するのが正解かと
972名前は開発中のものです。
2020/01/10(金) 19:55:49.34ID:Pn9TT9VK linqの冒険…
973名前は開発中のものです。
2020/01/10(金) 21:28:36.70ID:08GLxpkh974名前は開発中のものです。
2020/01/10(金) 22:12:46.10ID:lJeo0zER 3dでPlatform does not support compute shadersこんなエラーが出たんだがよくわかんないんだけどどういうこと?
ユニティちゃんが原因みたいだけどそれ以上はわからなかった
ユニティちゃんが原因みたいだけどそれ以上はわからなかった
975名前は開発中のものです。
2020/01/10(金) 22:17:28.65ID:Fenu7wQ/ そのシェーダーを積んでないから描画できないぞゴルァ、かと。
976名前は開発中のものです。
2020/01/10(金) 22:52:24.52ID:L/Emtw4P >>970
そだっけ?その例だとWhereの第一引数に対してMoveNextすることでさらにその上のWhereが返すIEnumにアクセスってなるんじゃ?
Linqのコンパイラでそんな最適化しないでしょ
そだっけ?その例だとWhereの第一引数に対してMoveNextすることでさらにその上のWhereが返すIEnumにアクセスってなるんじゃ?
Linqのコンパイラでそんな最適化しないでしょ
977名前は開発中のものです。
2020/01/10(金) 23:26:02.35ID:XdY5fR78 >>976
遅延評価というものがあるし、そもそもWhereが返すのはIEnumでなく値そのものだからそこのところを誤解してる
遅延評価というものがあるし、そもそもWhereが返すのはIEnumでなく値そのものだからそこのところを誤解してる
978名前は開発中のものです。
2020/01/10(金) 23:40:30.02ID:lJeo0zER979名前は開発中のものです。
2020/01/11(土) 00:03:09.69ID:L2PVl/EJ Platformがなんちゃらっつってんだからそのへんじゃないの
980名前は開発中のものです。
2020/01/11(土) 00:19:49.48ID:MByoB+15 ビルドターゲットをWebGL辺りに変えたんだろ
あれはCompute Shaderが使えないからそんな感じのエラーが出る
あれはCompute Shaderが使えないからそんな感じのエラーが出る
981名前は開発中のものです。
2020/01/11(土) 01:41:24.01ID:1/8GPuaw982名前は開発中のものです。
2020/01/11(土) 01:45:41.87ID:1/8GPuaw WhereがIEnum返さなかったら次の人どうやって列挙するの
983名前は開発中のものです。
2020/01/11(土) 01:49:41.69ID:1/8GPuaw >>977
ついでに言うと遅延評価ってのはまさに後からMoveNextした時に評価されることを指すと思うぞこの場合
ついでに言うと遅延評価ってのはまさに後からMoveNextした時に評価されることを指すと思うぞこの場合
984名前は開発中のものです。
2020/01/11(土) 02:03:49.82ID:eNMw2FnY >>981-983
実行時の話な
var seq = list.Where(...)が返すのはIEnumだが、
実際にforeach(var n in seq)で遅延評価されるときには一つずつの値を返してるし、それが次のWhereに送られてる
ループの位置を見てみろ、配列は一回しか回ってないだろ?
実行時の話な
var seq = list.Where(...)が返すのはIEnumだが、
実際にforeach(var n in seq)で遅延評価されるときには一つずつの値を返してるし、それが次のWhereに送られてる
ループの位置を見てみろ、配列は一回しか回ってないだろ?
985名前は開発中のものです。
2020/01/11(土) 02:17:15.69ID:1/8GPuaw >>984
いやだからその展開式みたいに実行時コードがなるって話あったっけ?
こんぱいられべるでLINQ特化で最適化しないとそうはできないと思うけど、いや俺が知らないだけかもなのでこう最適化されるよーってソースあるなら教えてくれ
いやだからその展開式みたいに実行時コードがなるって話あったっけ?
こんぱいられべるでLINQ特化で最適化しないとそうはできないと思うけど、いや俺が知らないだけかもなのでこう最適化されるよーってソースあるなら教えてくれ
986名前は開発中のものです。
2020/01/11(土) 02:34:07.57ID:eNMw2FnY >>985
yieldのごく普通の振る舞いなんだからイテレーター使ったことあるなら分かるだろ?
ちなみに具体的なソースはこれな
https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Where.cs
yieldのごく普通の振る舞いなんだからイテレーター使ったことあるなら分かるだろ?
ちなみに具体的なソースはこれな
https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Where.cs
987名前は開発中のものです。
2020/01/11(土) 03:28:33.54ID: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のあとにコルーチンが実行されないのはどうしてですか?
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名前は開発中のものです。
2020/01/11(土) 03:42:34.65ID:eNMw2FnY989名前は開発中のものです。
2020/01/11(土) 11:12:22.12ID:1/8GPuaw >>988
いやごめん、むしろお前がなんでそんな理解してるのか分からん。
それはイテレーターを書くためのシンタックスシュガーであって、結局はEnumeから列挙するためにMoveMextやら何やら呼ぶことになると思うが。
そもそもお前が言ってるようなループなんてコード上は展開されないだろ
あくまでもEnumeのMoveNextやらなんやらで列挙されてくだけで。つか自分があげたWhereのどこ見りゃ途中のものも全部前のが返すEnumeを第一引数として受け取りEnumeを返すってのが明らかだと思うが。
その上でWhereを続けた時などにC#上もしくはコンパイラ生成時に最適化がなされる事はあり得るかも?とは思うけどそう言うこと言いたいんじゃないよね
いやごめん、むしろお前がなんでそんな理解してるのか分からん。
それはイテレーターを書くためのシンタックスシュガーであって、結局はEnumeから列挙するためにMoveMextやら何やら呼ぶことになると思うが。
そもそもお前が言ってるようなループなんてコード上は展開されないだろ
あくまでもEnumeのMoveNextやらなんやらで列挙されてくだけで。つか自分があげたWhereのどこ見りゃ途中のものも全部前のが返すEnumeを第一引数として受け取りEnumeを返すってのが明らかだと思うが。
その上でWhereを続けた時などにC#上もしくはコンパイラ生成時に最適化がなされる事はあり得るかも?とは思うけどそう言うこと言いたいんじゃないよね
990名前は開発中のものです。
2020/01/11(土) 11:45:27.42ID:GoAReVTm >>987
>最初のUpdateのあとにコルーチンが実行されないのは
最初のUpdateはスタート直後に動くんだけど、Updateの間隔は不定なので、最初のスタートのオーバーヘッドがUpdateを遅延させてしまい2回ログが出力されたのかと思う
これを修正するには
Update を FixedUpdate にし
yield return null を yield return new WaitForFixedUpdate() にする事で解決は出来る
UpdateとFixedUpdate の動作の違いによる処理の仕様なのかな、一言で言うと
>最初のUpdateのあとにコルーチンが実行されないのは
最初のUpdateはスタート直後に動くんだけど、Updateの間隔は不定なので、最初のスタートのオーバーヘッドがUpdateを遅延させてしまい2回ログが出力されたのかと思う
これを修正するには
Update を FixedUpdate にし
yield return null を yield return new WaitForFixedUpdate() にする事で解決は出来る
UpdateとFixedUpdate の動作の違いによる処理の仕様なのかな、一言で言うと
991名前は開発中のものです。
2020/01/11(土) 12:19:43.31ID:eNMw2FnY992名前は開発中のものです。
2020/01/11(土) 12:28:16.42ID:SODcWRcR オーケー、乳首相撲で決めよう
二人とも乳首出して
二人とも乳首出して
993名前は開発中のものです。
2020/01/11(土) 12:34:46.58ID:1/8GPuaw >>991
最初はなんか最適化かなんか俺の知らないのあるの?って感じだったけど、今はなんか勘違いしてる人に諭してあげようかなと思ったけど無駄っぽいからもうどうでもいいかな
最後に言っとくけど、おまいのあげたイテレーターのソース、foreachが一つしか展開されないとか言ってるけど思いっっっっっきり勘違いしてると思うよ
Whereのイテレータ内で展開してるforeachはソースのイナミュレーターを回してるけどそれは前のWhereが返すイナミュラブルを回してて、それはまた別にforeach x展開してるイテレーターによるものだよ。
と言ってそれはシンタックスシュガーによるものだからforeachが何重になってると言うのともまた違う
最初はなんか最適化かなんか俺の知らないのあるの?って感じだったけど、今はなんか勘違いしてる人に諭してあげようかなと思ったけど無駄っぽいからもうどうでもいいかな
最後に言っとくけど、おまいのあげたイテレーターのソース、foreachが一つしか展開されないとか言ってるけど思いっっっっっきり勘違いしてると思うよ
Whereのイテレータ内で展開してるforeachはソースのイナミュレーターを回してるけどそれは前のWhereが返すイナミュラブルを回してて、それはまた別にforeach x展開してるイテレーターによるものだよ。
と言ってそれはシンタックスシュガーによるものだからforeachが何重になってると言うのともまた違う
994名前は開発中のものです。
2020/01/11(土) 12:40:12.52ID:Y9mLoGJE 初心者スレでイキんなやハゲ
995名前は開発中のものです。
2020/01/11(土) 12:46:12.11ID:wPvGtAaQ 敵に攻撃するとダメージが数字でポップアップされるという処理を
var pos = 対象の敵オブジェクト.GetComponent<Transform>()して、
ダメージのテキストをプレハブ化した物をInstantiate(プレハブ, pos)で生成したのですが
ダメージのプレハブが敵オブジェクトの子になっているので、敵オブジェクトのHPが0になってDestroyされた瞬間に一緒に消えてしまいます
生成するプレハブの位置を任意のゲームオブジェクトのtransformに重ねるが、子にはしないみたいな事はどうすれば出来るのでしょうか?
transformから位置(座標?)だけを取得する方法がわかれば応用が色々出来そうなのですが
var pos = 対象の敵オブジェクト.GetComponent<Transform>()して、
ダメージのテキストをプレハブ化した物をInstantiate(プレハブ, pos)で生成したのですが
ダメージのプレハブが敵オブジェクトの子になっているので、敵オブジェクトのHPが0になってDestroyされた瞬間に一緒に消えてしまいます
生成するプレハブの位置を任意のゲームオブジェクトのtransformに重ねるが、子にはしないみたいな事はどうすれば出来るのでしょうか?
transformから位置(座標?)だけを取得する方法がわかれば応用が色々出来そうなのですが
996名前は開発中のものです。
2020/01/11(土) 13:01:07.21ID:eNMw2FnY >>993
だろ、やっぱり入れ子になってると勘違いしてるよな?
サンプルソース書いてあげたから見てみな
IL_009aのループ一度しか無いし中身の取り出しも一回だけ
その後でLINQメソッドに渡されたデリゲートを適用してそのままループ内の処理に進んでる
https://imgur.com/a/E99qR2O
だろ、やっぱり入れ子になってると勘違いしてるよな?
サンプルソース書いてあげたから見てみな
IL_009aのループ一度しか無いし中身の取り出しも一回だけ
その後でLINQメソッドに渡されたデリゲートを適用してそのままループ内の処理に進んでる
https://imgur.com/a/E99qR2O
997名前は開発中のものです。
2020/01/11(土) 13:08:04.10ID:ftB0znZP998名前は開発中のものです。
2020/01/11(土) 13:13:14.92ID:GoAReVTm >>995
Instantiateする際に
GameObject obj =Instantiate(プレハブ, pos)
これでGameObject取得できるので、その後すぐに親を外す
obj.transform.paerent =null
これで敵の子として生成した後に独立する
Instantiateする際に
GameObject obj =Instantiate(プレハブ, pos)
これでGameObject取得できるので、その後すぐに親を外す
obj.transform.paerent =null
これで敵の子として生成した後に独立する
999名前は開発中のものです。
2020/01/11(土) 13:13:52.35ID:1/8GPuaw1000名前は開発中のものです。
2020/01/11(土) 13:17:05.48ID:eNMw2FnY 頭悪い子だな
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 247日 22時間 41分 28秒
新しいスレッドを立ててください。
life time: 247日 22時間 41分 28秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 「インバウンド政策上、中国は重要」、訪日自粛で金子国交相「早く通常の状況に戻っていただきたい」 [ぐれ★]
- 中国外相、台湾問題巡りフランスに支持要請−高市首相発言「挑発的」 [♪♪♪★]
- 今後50年間、毎年100万人ずつ人口が減る…「少子化対策」の失敗で日本が迎える「死ぬまで搾取」というヤバい未来 ★5 [ぐれ★]
- 橋下徹氏 高市首相“台湾有事”発言に「政治家の失言で一部の人でも仕事がキャンセルに…我々は認めていいのかな」疑問呈す [muffin★]
- 《「最近いつした?」が口癖》国分太一 女性への“わいせつ事案”報道…目撃されていた「下ネタ好き」と「悪辣なイジり癖」 [Ailuropoda melanoleuca★]
- スリランカ人男性の強制送還「中止を」 野党議員らが入管庁に要請 [♪♪♪★]
- 【悲報】高市早苗さん、就任たった1ヶ月で国が滅茶苦茶になる [115996789]
- 【動画】上海バンダイナムコフェス、ワンピース歌ってる途中に中国政府「日本人の公演全面禁止」発令された瞬間強制終了 怖すぎ★2 [579392623]
- 【速報】中国政府、ゲームを禁輸。原神やブルアカ、荒野行動が日本で影響 [347751896]
- 【んな🏡】金曜✨夜も~オールナイトんなっしょい❗🏰【姫森ルーナ】
- 現役JKのお茶会スレ( ¨̮ )︎︎𖠚ᐝ171
- 【動画】上海バンダイナムコフェス、ワンピース歌ってる途中に中国政府「日本人の公演全面禁止」発令された瞬間強制終了 怖すぎ★3 [579392623]
