ゲームエンジン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
レス数が950を超えています。1000を超えると書き込みができなくなります。
2019/05/08(水) 14:35:37.58ID:VDHuk8YT
891名前は開発中のものです。
2020/01/04(土) 21:55:45.93ID:6CzwS6io まぁぃまのパソコンやスマホでifの分岐なんかどうでもいい処理
gameobject.find ですら問題ない
結論、気にするな
gameobject.find ですら問題ない
結論、気にするな
892名前は開発中のものです。
2020/01/04(土) 22:00:43.39ID:hGDO8YfT updateで毎フレーム呼ぶなんて論外ですよ
893名前は開発中のものです。
2020/01/04(土) 22:51:48.38ID:yESk8dXK >>890
それ最初のが出てから、をどうやるの
それ最初のが出てから、をどうやるの
894弟子
2020/01/04(土) 23:26:41.70ID:6CzwS6io もっと良い処理は所謂オブジェクト思考
enemyさんのhpを減らしてる処理がどこかに在るわけさ、それはenemyさん自信が持ってる可能性あるので、そこで0になったら次のenemyさんを生成してあげるように管理者へ働きかければいいのさ
攻撃あたる→ダメージ分だけhp減らす
ってやってるはずだお
enemyさんのhpを減らしてる処理がどこかに在るわけさ、それはenemyさん自信が持ってる可能性あるので、そこで0になったら次のenemyさんを生成してあげるように管理者へ働きかければいいのさ
攻撃あたる→ダメージ分だけhp減らす
ってやってるはずだお
895弟子
2020/01/04(土) 23:30:14.89ID:6CzwS6io 一応公式のupdate のサンプル貼っとくよ
https://docs.unity3d.com/ja/current/ScriptReference/MonoBehaviour.Update.html
あれif 分使ってるわ
https://docs.unity3d.com/ja/current/ScriptReference/MonoBehaviour.Update.html
あれif 分使ってるわ
896ダーク王鍬大使 ◆SoVpkB15jY
2020/01/05(日) 01:34:50.36ID:arSAPuKi 質問チンコ(^^
ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
と言われるのでふが(^^
御覧の通り特にマイナスは使ってないんでふよ(^^
Debug.Log("1枚目のシートの1番目 name=" + mobList.sheets[1].list[10].威力);
原因分かりまんこ?(^^
ちなみにテラシュールさんのスクリプト使ってまふ(^^
ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
と言われるのでふが(^^
御覧の通り特にマイナスは使ってないんでふよ(^^
Debug.Log("1枚目のシートの1番目 name=" + mobList.sheets[1].list[10].威力);
原因分かりまんこ?(^^
ちなみにテラシュールさんのスクリプト使ってまふ(^^
897名前は開発中のものです。
2020/01/05(日) 08:53:30.62ID:ks/IWdWO >>896
単純に配列のサイズより添字の方が大きいだけ
単純に配列のサイズより添字の方が大きいだけ
898名前は開発中のものです。
2020/01/05(日) 09:44:12.13ID:bo4vBboO 3Dアクションゲームの水の面を実装中。
開発機 Windows 10 にてPostProcessで水中のブラー表現とかして、良い感じと思ってたが、
デプロイ先 Android 10 でFPSが激落ち。水中で0.7fpsっておい。
また、水面を実装したとたんに、処理落ちで平均20fpsとかになってしまった。
水面はスタンダードアセットの "Water" だけど、そんなに処理食うものなの?
あと、モバイルではPostProcessは無理っぽい感じかな?
なんか昔の記事ではImageEffectとかあったらしいけど今のUnityにはない?
水面・水中実装は必須なので、なんとか処理負荷軽減しなくては。
開発機 Windows 10 にてPostProcessで水中のブラー表現とかして、良い感じと思ってたが、
デプロイ先 Android 10 でFPSが激落ち。水中で0.7fpsっておい。
また、水面を実装したとたんに、処理落ちで平均20fpsとかになってしまった。
水面はスタンダードアセットの "Water" だけど、そんなに処理食うものなの?
あと、モバイルではPostProcessは無理っぽい感じかな?
なんか昔の記事ではImageEffectとかあったらしいけど今のUnityにはない?
水面・水中実装は必須なので、なんとか処理負荷軽減しなくては。
899名前は開発中のものです。
2020/01/05(日) 12:25:38.99ID:TFbbbwof >>898
いいアセットがありますから、ぜひ買ってください
いいアセットがありますから、ぜひ買ってください
900名前は開発中のものです。
2020/01/05(日) 12:45:02.02ID:bo4vBboO "Water" は設定を見直したら処理負荷が少なくなったので、おそらく問題ない。
問題は、PostProcess で、コレを切ったら、モバイルでFPSが激上がる。
動作リファレンスは Android 9 (Android One S3) ※上では書き間違えた
この機種は、ゲームするには低スペックなので、コレでサクサク動けば問題ないかなと。
もっと言えば、最近の RAM 3GB 程度の Android TV で30fpsで動くことが目標。
PostProcess モバイルでは全然使えんね。ただ画面に水中にいるように、
青緑のフィルターかけたいだけなのに…
問題は、PostProcess で、コレを切ったら、モバイルでFPSが激上がる。
動作リファレンスは Android 9 (Android One S3) ※上では書き間違えた
この機種は、ゲームするには低スペックなので、コレでサクサク動けば問題ないかなと。
もっと言えば、最近の RAM 3GB 程度の Android TV で30fpsで動くことが目標。
PostProcess モバイルでは全然使えんね。ただ画面に水中にいるように、
青緑のフィルターかけたいだけなのに…
901名前は開発中のものです。
2020/01/05(日) 12:46:50.05ID:8EV9fu0v なら画面全面にimage を半透明で覆えばよくね?
902名前は開発中のものです。
2020/01/05(日) 12:50:15.96ID:ZhgV+v79 んだんだ。
または光源、環境光の値を変えるべ。
または光源、環境光の値を変えるべ。
903名前は開発中のものです。
2020/01/05(日) 14:39:39.76ID:bo4vBboO >>901, 902
アドバイスありがとう。
今回はひとまず Canvas に "画像" を追加して、青緑の半透明に設定し、
水中判定の時にON, OFFすることによって目的の機能が実装出来た。
が、FPSは、水中で27fpsとか微妙な数値になってしまうので、
もう少し水中動作時の処理負荷の原因を追う必要があるみたい。
でもサンキュー。
アドバイスありがとう。
今回はひとまず Canvas に "画像" を追加して、青緑の半透明に設定し、
水中判定の時にON, OFFすることによって目的の機能が実装出来た。
が、FPSは、水中で27fpsとか微妙な数値になってしまうので、
もう少し水中動作時の処理負荷の原因を追う必要があるみたい。
でもサンキュー。
904名前は開発中のものです。
2020/01/05(日) 15:30:32.39ID:ZhgV+v79 >>903
リアルタイムならon offで重さが変わるから、色味に影響のない透明度0.01ぐらいで置いて、処理時間をなるべく変化させないということもあるぎゃ。
リアルタイムならon offで重さが変わるから、色味に影響のない透明度0.01ぐらいで置いて、処理時間をなるべく変化させないということもあるぎゃ。
905名前は開発中のものです。
2020/01/05(日) 16:52:03.66ID:UKiA3e/s RAM3GBとかどんなハイスペスマホだよww
そんなの持ってるやつ数パーセントもいないぞ
そんなの持ってるやつ数パーセントもいないぞ
906名前は開発中のものです。
2020/01/05(日) 17:06:52.35ID:oPeOUZBr Unityとは関係ないけどバトルゲームでのアニメーションの時間感覚がわからん
ボタン押す→予備動作→アクション→ヒット→戻るって遷移で
ボタン押してヒットまでの時間を0.33秒にしたら
見せた友人に早すぎてわからんと言われたし…
棒切れで人をポカリと殴るモーションなんだが
ボタン押す→予備動作→アクション→ヒット→戻るって遷移で
ボタン押してヒットまでの時間を0.33秒にしたら
見せた友人に早すぎてわからんと言われたし…
棒切れで人をポカリと殴るモーションなんだが
907名前は開発中のものです。
2020/01/05(日) 18:05:12.83ID:bo4vBboO >>904
ありがとう。今、Canvas に ”画像” 貼る解決法は保留にして、カメラに自作スクリプト付けようと試してた。
void OnRenderImage(RenderTexture src, RenderTexture dest) {
Graphics.Blit(src, dest, material);
}
とかで、試しにマテリアルに "water" のマテリアル渡したら効果が付いた。
よし、初めてシェーダー書くか! と思ったら記述言語 C# じゃない…
青緑半透明をオーバーレイするだけのシェーダーなんだけどね。調べるか。
ありがとう。今、Canvas に ”画像” 貼る解決法は保留にして、カメラに自作スクリプト付けようと試してた。
void OnRenderImage(RenderTexture src, RenderTexture dest) {
Graphics.Blit(src, dest, material);
}
とかで、試しにマテリアルに "water" のマテリアル渡したら効果が付いた。
よし、初めてシェーダー書くか! と思ったら記述言語 C# じゃない…
青緑半透明をオーバーレイするだけのシェーダーなんだけどね。調べるか。
908名前は開発中のものです。
2020/01/05(日) 18:12:05.93ID:8EV9fu0v909名前は開発中のものです。
2020/01/05(日) 18:14:39.35ID:bo4vBboO >>905
RAM 3GBは個人的なアプリ動作の想定値だったけどこれから増えてくると思う。
数年前の RAM 1GB〜2GB時代には、モバイルでUnity制作の3Dゲームは厳しいだろうなと思ってたけど、
RAM 3GB〜4GBの時代になりつつある今、Unityで3Dゲーム開発だ!と思ってここに来たとこ。
RAM 3GBは個人的なアプリ動作の想定値だったけどこれから増えてくると思う。
数年前の RAM 1GB〜2GB時代には、モバイルでUnity制作の3Dゲームは厳しいだろうなと思ってたけど、
RAM 3GB〜4GBの時代になりつつある今、Unityで3Dゲーム開発だ!と思ってここに来たとこ。
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 の動作の違いによる処理の仕様なのかな、一言で言うと
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- 【速報】立花孝志容疑者、起訴 [おっさん友の会★]
- 【芸能】長嶋一茂 高層ビル住民にパラシュートのススメ 香港火災を例に「理性を最後まで失わずに対処できる…」 [冬月記者★]
- 石破茂氏、「高市さんよくぞ言った」の空気に待った 存立危機事態…考えてはいても「公の場で言うことか」:東京新聞 ★2 [少考さん★]
- 【テレビ】玉川徹「これ天災じゃなくて人災でしょ。責任どうするんだ」 日本のホテル、中国人観光客からのキャンセルが相次ぐ★2 [冬月記者★]
- 【芸能】元NHK・中川安奈アナ、グラビアのNG事項明かす 「ポリシーがあって、谷間はNG」「元NHKってとこもあるので」 [冬月記者★]
- 25年の食品値上げ、2年ぶり2万品目超え [少考さん★]
- 【高市速報】立花孝志起訴wwwwwwwwwwwwww [931948549]
- 【高市速報】トランプ氏「私の考えた関税政策で税収めっちゃ増えたので所得税なくすぞ。どうだ晋三?」 [614650719]
- 中国「誠意を見せる気があるなら高市早苗は辞任しろ。」キタ━(゚∀゚)━! [153490809]
- 【悲報】福岡「日本第3位の都市はウチたい!」横浜「いやオレだべ!」→結果WWWWWWWWWW [732289945]
- 立川志らく「高市さん批判するって日本人じゃないの?」2017年の志らく「政府を批判しただけで反日認定?危険だよ。その考え」 [165981677]
- 【朗報】最近の日本、ルックスがヤバい子どもが絶滅しているらしい [242521385]
