ゲームエンジン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
880名前は開発中のものです。
2020/01/03(金) 22:34:44.77ID:MQKQya2C >>879
なるほど、3Dモデルは腰では分けてなかったので、体ノードにカプセルコライダーつけたら、水中の前傾でのめり込みが解消した。
でも、もともとの歩く時も傾斜しないカプセルコライダー基準で、オブジェクトを掴む判定や、上る・下りる判定をしてたので、
地上と水中でカプセルコライダーを切り替えることが必要かな。
ありがとう。自分では気づけない発想で本当に勉強になって助かる。
なるほど、3Dモデルは腰では分けてなかったので、体ノードにカプセルコライダーつけたら、水中の前傾でのめり込みが解消した。
でも、もともとの歩く時も傾斜しないカプセルコライダー基準で、オブジェクトを掴む判定や、上る・下りる判定をしてたので、
地上と水中でカプセルコライダーを切り替えることが必要かな。
ありがとう。自分では気づけない発想で本当に勉強になって助かる。
881名前は開発中のものです。
2020/01/04(土) 03:22:30.69ID:kwztwMX9 前々からちょっと気になってたので質問させてください。
オブジェクトAのクラスAにpublic GameObject objB
としてオブジェクトBをインスペクタ上からクラスAにアタッチした場合って
メモリの使用はBは参照してるって認識でいいんでしょうか?
例えばオブジェクトBのデータ量が100MBあったとして、
Aにアタッチしたらゲーム内で200MB使用してることにならないのかって意味です。
オブジェクトAのクラスAにpublic GameObject objB
としてオブジェクトBをインスペクタ上からクラスAにアタッチした場合って
メモリの使用はBは参照してるって認識でいいんでしょうか?
例えばオブジェクトBのデータ量が100MBあったとして、
Aにアタッチしたらゲーム内で200MB使用してることにならないのかって意味です。
882名前は開発中のものです。
2020/01/04(土) 06:09:49.67ID:6CzwS6io それアタッチじゃなくて参照じゃね?
ゲーム立ち上げてメモリーマネージャーとかで見ればよくね?
ゲーム立ち上げてメモリーマネージャーとかで見ればよくね?
883名前は開発中のものです。
2020/01/04(土) 17:59:07.23ID:XO34IPeI 質問させて下さい。
update内で
if(enemy.hp == 0)
を条件にエネミーオブジェクトをデストロイして新しいエネミープレファブを生成する処理を書いたとすると、新しいエネミーが出現するまでの間コンソールにenemyがありません的な警告が出続けてしまいます。
この警告は無視しても良いのでしょうか?
それともhp == 0という条件を辞めて他の関数でhpが0になったらenemyAlive = falseなどのフラグをたてて管理すれば良いのでしょうか?
もっと良い方法もあるのでしょうか?
初歩的すぎる質問だと思いますが先輩方の知恵をお貸し頂きたいです。
よろしくお願いいたします。
update内で
if(enemy.hp == 0)
を条件にエネミーオブジェクトをデストロイして新しいエネミープレファブを生成する処理を書いたとすると、新しいエネミーが出現するまでの間コンソールにenemyがありません的な警告が出続けてしまいます。
この警告は無視しても良いのでしょうか?
それともhp == 0という条件を辞めて他の関数でhpが0になったらenemyAlive = falseなどのフラグをたてて管理すれば良いのでしょうか?
もっと良い方法もあるのでしょうか?
初歩的すぎる質問だと思いますが先輩方の知恵をお貸し頂きたいです。
よろしくお願いいたします。
884名前は開発中のものです。
2020/01/04(土) 17:59:19.32ID:kov3mgdb 珍しくまともに質問スレしてるな
3年ぶりくらいか?
3年ぶりくらいか?
885883
2020/01/04(土) 18:02:59.33ID:XO34IPeI 書き忘れてしまいました。
作っているのはRPGの様なバトル画面でプレイヤーとエネミーの攻撃力を交互にHPから引くという動作をさせている物です。
今は1vs1で雛形作っていますが、完成後には敵を複数出現させたいと思っています。
作っているのはRPGの様なバトル画面でプレイヤーとエネミーの攻撃力を交互にHPから引くという動作をさせている物です。
今は1vs1で雛形作っていますが、完成後には敵を複数出現させたいと思っています。
886名前は開発中のものです。
2020/01/04(土) 18:59:09.06ID:kNbEhA8/ >>883
無視しても影響は無いと思うけど、警告は意図しない使われ方だから出てるわけで、出来ればステータス管理用のクラスを別で作ってそれを持たせておいた方がいいね
無視しても影響は無いと思うけど、警告は意図しない使われ方だから出てるわけで、出来ればステータス管理用のクラスを別で作ってそれを持たせておいた方がいいね
887名前は開発中のものです。
2020/01/04(土) 19:30:16.09ID:yESk8dXK >>883
ありません的なじゃなくて正確な警告文書こうや
ありません的なじゃなくて正確な警告文書こうや
888名前は開発中のものです。
2020/01/04(土) 19:39:48.33ID:XO34IPeI889名前は開発中のものです。
2020/01/04(土) 21:24:53.94ID:2v8PE2Fo890名前は開発中のものです。
2020/01/04(土) 21:33:48.90ID:hGDO8YfT if文は重いので可能な限り減らしましょう
最初のenemyが出てから呼ぶようにしましょう
最初のenemyが出てから呼ぶようにしましょう
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がなんちゃらっつってんだからそのへんじゃないの
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- 「怒りに震えて涙が出た」 同性婚認めず「合憲」判断に原告が反発 「差別的な判決だ」 ★2 [ぐれ★]
- 今後50年間、毎年100万人ずつ人口が減る…「少子化対策」の失敗で日本が迎える「死ぬまで搾取」というヤバい未来 ★6 [ぐれ★]
- 財政膨張、自民党内に異論 麻生副総裁「やりすぎじゃないか」 [蚤の市★]
- 中国外務省「正式な発言撤回なければ受け入れず」 高市首相は台湾有事「存立危機事態」言及せずも「言及しないことと撤回は別問題」★6 [ぐれ★]
- 今後50年間、毎年100万人ずつ人口が減る…「少子化対策」の失敗で日本が迎える「死ぬまで搾取」というヤバい未来 ★7 [ぐれ★]
- 「インバウンド政策上、中国は重要」、訪日自粛で金子国交相「早く通常の状況に戻っていただきたい」★3 [ぐれ★]
- 日本政府、ブチギレ「ガソリン暫定税率廃止したぶん、どこ増税すればいいんだよ!!!!」 [329329848]
- 【動画】上海バンダイナムコフェス、ワンピース歌ってる途中に中国政府「日本人の公演全面禁止」発令された瞬間強制終了 怖すぎ★5 [579392623]
- お前らって定期的にうんちすることを心がけてるよな
- 中国を怒らせた高市答弁は、質問した岡田が悪い。という評価が有権者の間で確定してしまう [313077826]
- 【悲報】国分太一さん「全てを失ったんだ!答え合わせさせてくれ!」日テレ「ダメです(即答」 [531674905]
- 【悲報】30代独身男性の休日、悲惨すぎるwmwmwmwmwmwmwmwmmwmwmw [517459952]
