[過去ログ]
【ゲームエンジン】Unityなんでも質問スレpart11 (1002レス)
【ゲームエンジン】Unityなんでも質問スレpart11 http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
798: 名前は開発中のものです。 [] 2023/10/07(土) 05:20:30.83 ID:qkvZb3Xq >>794 そうよね 多分、この能力が弱いから、何してるか分からなくなる http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/798
799: 名前は開発中のものです。 [sage] 2023/10/07(土) 12:34:08.35 ID:4GUHVeZ/ コードが1番厳格な言語なんだから逆にお前らコード読めよって言いたくなる http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/799
800: 名前は開発中のものです。 [] 2023/10/08(日) 11:11:44.83 ID:A53HSSQN 一年後の自分がみてすぐ意味がわかるコードならコメントなくていいよ http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/800
801: 名前は開発中のものです。 [] 2023/10/08(日) 14:38:08.50 ID:qKc3n1hD gptに聞いても分からなかったので、質問さえてください(*´ω`*) enum型のgrounttypeで判定を行いたいのですが、以下の例であれば0がnoneに相当するはずなので、「地面なし」が1回printされると考えました しかし2回反復されます すみません、頭がこんがらがりやすいのですが、修正点はありますか? private enum groundType { NONE, GROUND } private groundType[,] nurulist; int[,] tile = { {0,1,1,1 }, { 1,1,1,1} }; private void Start() { nurulist = new groundType[tile.GetLength(0), tile.GetLength(1)]; for (int y = 0; y < tile.GetLength(0); y++) { for (int x = 0; x < tile.GetLength(1); x++) { //エレメントを取り出してる var val = nurulist[x, y]; //2回しか反復されないね if (val == groundType.NONE) { print("地面なし"); } } } http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/801
802: 名前は開発中のものです。 [] 2023/10/08(日) 15:08:48.89 ID:CixfVofr for文の中にfor文で2回じゃないの? print(val); //2回しか反復されな printしたらNONE2回表示されたよ あと折角ENUMにしたのに、 int[,] tile = { {0,1,1,1 }, { 1,1,1,1} これに使わんの意味ないやん 多次元配列はややこしいから、まずやりたいことを 1次元配列にしてみては? http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/802
803: 名前は開発中のものです。 [] 2023/10/08(日) 16:06:40.55 ID:CixfVofr さて private enum groundType { NONE, GROUND } private groundType[,] nurulist; groundType[,] tile = { {groundType.NONE,groundType.GROUND }, {groundType.GROUND,groundType.GROUND }, }; private void Start() { nurulist = new groundType[tile.GetLength(0), tile.GetLength(1)]; 少し簡単にしてみた これ見ればわかると思うけど 比較してるとこ、、何もはいってないよね? てことで //nurulist = new groundType[tile.GetLength(0), tile.GetLength(1)]; nurulist = tile; にすれば行けるけど まぁシンプルにした方がいいんじゃない http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/803
804: 名前は開発中のものです。 [] 2023/10/08(日) 16:09:13.97 ID:CixfVofr ちなみに、最初のと修正後のprint ttps://i.gyazo.com/e6ed208f85457547b23665ac2c5c8d3d.png ttps://i.gyazo.com/2138501a0fd17f87c43b675d6083ce24.png http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/804
805: 名前は開発中のものです。 [] 2023/10/08(日) 16:16:04.91 ID:CixfVofr つまり nurulist = new groundType[tile.GetLength(0), tile.GetLength(1)]; これがただNEWして箱を用意してるだけね 中身は入れてないという事ね コンストラクタに渡したいのかと思うけどね http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/805
806: 名前は開発中のものです。 [sage] 2023/10/08(日) 16:18:35.99 ID:jvAEMxWF 質問です 音声の出力を、 VR繋いだら2chにしたいけどVR繋がない時は5.1chにしたいです 方法ありますか? http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/806
807: 名前は開発中のものです。 [] 2023/10/08(日) 17:49:03.90 ID:qKc3n1hD https://gist.github.com/baba-s/e4da98f6fce2b6cca36b0cf3bb91f9d0 ありがとうございます 倉庫番のソースを出すべきでした 後出しする癖は治します このソースの100行目付近でvalとtiletype.noneの列挙型で条件判定をしていると思うのですが、その仕組を再現したくて、サンプル作ってたところでした valの中には何が入ってるんでしょうか? http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/807
808: 名前は開発中のものです。 [] 2023/10/09(月) 08:42:52.09 ID:vRb4YrKY >>807 テキストファイルから抽出したtilelistの中身を取り出してるね 中身はTiletype型だね 100行目の手前で文字列を数値化した後tiletypeにキャストしてる箇所があるよ >>801みたいな形はテキスト使わなくてもできる簡易型だね for (int x = 0; x < tile.GetLength(0); x++) { for (int y = 0; y < tile.GetLength(1); y++) { nurulist[x, y] = (groundType)tile[x, y]; みたいに中身をいれてやらんとダメだね 上の人も言ってるけど nurulist = new groundType[tile.GetLength(0), tile.GetLength(1)]; だけだと中身が初期化されるからこのままだと中身は全部noneだね http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/808
809: 名前は開発中のものです。 [sage] 2023/10/09(月) 11:43:40.77 ID:gtBjEm4L デバッガで見ればいいじゃん textはただ読んだだけじゃ型の付与は自動では行われないから全部ただのStringになる だからキャストしないとintにならない その手間があるから配列を2つ使うのであって、キャストが必要ないならそもそも配列を2つ使う意味ない http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/809
810: 名前は開発中のものです。 [] 2023/10/09(月) 12:30:40.45 ID:r3yP+wQc デバッガで見られないだろうと想定して printで表示して画像まで貼ってあげてる 最初の人えらいなあ http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/810
811: 名前は開発中のものです。 [] 2023/10/09(月) 14:02:31.35 ID:vof/8Dt/ >>808 ありがとうございます 列挙型で条件判定している理由がいまいちわからないのですが、単純にわかりやすいからそうしているのでしょうか?地面ありは1、地面なしは0のような条件判定でも可能ではありますけども。 http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/811
812: 名前は開発中のものです。 [] 2023/10/09(月) 14:04:28.34 ID:vof/8Dt/ https://www.sejuku.net/blog/50282 キャストの理解が甘いのでしばらくここやります http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/812
813: 名前は開発中のものです。 [] 2023/10/09(月) 14:43:38.26 ID:vof/8Dt/ 基礎できてないと駄目ですね 急がば回れ http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/813
814: 名前は開発中のものです。 [] 2023/10/09(月) 15:25:53.20 ID:09LWMBEV >>811 分かりやすいからだろうね キャストは簡単だよ enumをintにキャストした場合、列挙されてる上から0,1,2,3って順番に変換されるだけ 逆も同様 http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/814
815: 名前は開発中のものです。 [] 2023/10/09(月) 16:23:28.91 ID:pKPluVsi 何のために列挙型にするかというと わかりやすさと安全性だよ この場合はNONEとGROUDしか受け付けないとしばることができる intならいろんな数字が入ることを想定しないといけない この場合は2つで済むから楽で安全だろ? だからintにキャストは安易にしてはダメ C#は基本的に意味のない仕様はないから そういう安易な理解のまま進めない方がいい http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/815
816: 名前は開発中のものです。 [] 2023/10/09(月) 17:09:51.52 ID:ETUMQ4bb まあ通行可能判定みたいな本当に二つしかない判定ならBoolでいいとは思うけどね それでもうっかりさんはcannotpath=trueなのか、canpath=Trueなのか忘れてしまうからなw そういう時にもenum{canpath,cannotpath}にしとけば誰が見てもわかるし、あとあとslidepathとかdoublecostpathとか追加するのも楽だったりする http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/816
817: 名前は開発中のものです。 [sage] 2023/10/09(月) 17:16:16.72 ID:eLHYY8gC まあ拡張性考えるとboolは無いな http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/817
818: 名前は開発中のものです。 [] 2023/10/09(月) 17:33:26.63 ID:vof/8Dt/ >>814 >>815 ありがとうございます キャストについてちょっと勉強してきます また、2日後(*´ω`*) http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/818
819: 名前は開発中のものです。 [sage] 2023/10/09(月) 17:41:35.81 ID:FYLcGTgG 質問です 作ったゲームをUnityroomに公開したところプレイの途中でフリーズしてしまいます exeでもapkでもフリーズはしないのですがどのように調査すれば良いでしょうか もしくはフリーズ自体直し方わかる方いらっしゃいませんか? http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/819
820: 低クオリティでごめんねごめんね [sage] 2023/10/09(月) 18:05:00.78 ID:fHLMLlEn どうしてもUnityルームじゃないとあかんのん? イッチじゃダメなん? http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/820
821: 名前は開発中のものです。 [sage] 2023/10/09(月) 21:15:37.23 ID:R+l0SF8j いやWebGLの問題かなと思って イッチに上げたらどうなるんだろうサンガツ http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/821
822: 名前は開発中のものです。 [] 2023/10/10(火) 01:12:17.28 ID:euWt7ft1 Animatorのうまい使い方のチュートリアルないですか? チュートリアルというか「State間をつなぎ、変数を動かすことで発火させます」みたいな基本的な使い方じゃなくて、 アイドル状態から座る動作はこのように遷移させると自然に見える、とか ダッシュ、ジャンプ、攻撃、着地みたいな連続的な動きをうまく遷移させるコツとか、 遷移図がスパゲティにならないような使い方の解説が欲しいんですが ウェブサイトじゃなくても教本でも構わんです http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/822
823: 名前は開発中のものです。 [] 2023/10/10(火) 10:41:41.13 ID:mytr+tEE キャストに付いて教えてください キャストとparseの違いがいまいちわかりません gptに質問したのですが、キャストは同じ型同士での変換、parseは異なる型への変換とのことです 詰まる所、型を大別すると「文字列と数値」の2つのみということですかね? 以下、gptに質問してみた結果です キャストとParseメソッドの違いは、主に次の点です: キャストは同じ型の変換に使用されます。つまり、基本的なデータ型間での変換(例: int から double への変換)に適しています。一方、Parseメソッドは、異なる型のデータを文字列から変換するために使用されます。 キャストは基本的に明示的な型変換です。つまり、変換先の型を明示的に指定する必要があります。例えば、(int)doubleValue というように変換先の型をカッコ内で指定します。一方、Parseメソッドは、変換元の文字列が適切な形式であることを確認し、それを適切な型に変換します。具体的な型指定は不要です。 以下に具体的な例を示します: キャストの例: csharp Copy code double doubleValue = 10.5; int intValue = (int)doubleValue; // キャスト:明示的な型変換 Parseメソッドの例: csharp Copy code string stringValue = "10"; int intValue = int.Parse(stringValue); // パース:文字列から整数への変換 要するに、キャストは既に同じ型の変数を持っている場合に使用し、型変換を明示的に行いたい場合に使用します。一方、Parseメソッドは文字列から他の型に変換するためのより柔軟な方法です。 http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/823
824: 名前は開発中のものです。 [sage] 2023/10/10(火) 10:53:23.85 ID:UgD80cWG イッチでもフリーズしたわ… ワイのゲームが悪そう http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/824
825: 低クオリティでごめんねごめんね [sage] 2023/10/10(火) 11:07:43.78 ID:/knfQQEr 毎回同じ場所なら原因特定出来そやけど 違う場所だと、機能削っていって確認するしか無さそうね http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/825
826: 名前は開発中のものです。 [sage] 2023/10/11(水) 01:05:23.17 ID:DCKOkOFp もしもtaskを使ってるならそれが原因WebGLでtaskを使うとフリーズする http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/826
827: 名前は開発中のものです。 [] 2023/10/11(水) 06:49:29.25 ID:gTMFZ2FZ >>823 C# におけるキャストと `Parse` メソッドの主な違いは以下の通りです: 1. **用途**: - **キャスト**: すでに存在するオブジェクトの型を別の型に変換するために使用されます。ただし、両方の型が何らかの関連性や変換可能性がある場合のみ可能です。 - **Parseメソッド**: 文字列を特定の型(通常は数値型や日付型など)に変換するために使用されます。 2. **例**: - **キャスト**: ```csharp double d = 3.14; int i = (int)d; // ここでdの小数部分は切り捨てられる ``` - **Parseメソッド**: ```csharp string s = "123"; int i = int.Parse(s); // 文字列"123"が整数123に変換される ``` 3. **エラーハンドリング**: - **キャスト**: キャストが不適切な場合(例:関連性のない型へのキャスト)には、実行時に例外がスローされる。 - **Parseメソッド**: 文字列が指定された型に変換できない場合、例外がスローされる。 4. **代替方法**: - **キャスト**: `as` キーワードを使った安全なキャストや `is` キーワードを使った型チェックがある。 - **Parseメソッド**: `TryParse` メソッドを使用することで、変換が成功したかどうかをブール値で取得し、例外を防ぐことができる。 要するに、キャストは既存のオブジェクト間での型変換、`Parse` メソッドは文字列から特定の型への変換のために使用されます。 http://mevius.5ch.net/test/read.cgi/gamedev/1691129256/827
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 175 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.022s