[過去ログ] 【ゲームエンジン】Unityなんでも質問スレpart11 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
798: 2023/10/07(土)05:20 ID:qkvZb3Xq(1) AAS
 >>794 
 そうよね 
 多分、この能力が弱いから、何してるか分からなくなる 
799: 2023/10/07(土)12:34 ID:4GUHVeZ/(1) AAS
 コードが1番厳格な言語なんだから逆にお前らコード読めよって言いたくなる 
800: 2023/10/08(日)11:11 ID:A53HSSQN(1) AAS
 一年後の自分がみてすぐ意味がわかるコードならコメントなくていいよ 
801(1): 2023/10/08(日)14:38 ID:qKc3n1hD(1/2) AAS
 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("地面なし"); 
     } 
    } } 
802: 2023/10/08(日)15:08 ID:CixfVofr(1/4) AAS
 for文の中にfor文で2回じゃないの? 
  
                 print(val); 
                 //2回しか反復されな 
 printしたらNONE2回表示されたよ 
  
 あと折角ENUMにしたのに、 
  
  int[,] tile = { 
                     {0,1,1,1 }, 
                     { 1,1,1,1} 
 これに使わんの意味ないやん 
  
 多次元配列はややこしいから、まずやりたいことを 
 1次元配列にしてみては? 
803: 2023/10/08(日)16:06 ID:CixfVofr(2/4) AAS
 さて 
 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; 
  
 にすれば行けるけど 
 まぁシンプルにした方がいいんじゃない 
804: 2023/10/08(日)16:09 ID:CixfVofr(3/4) AAS
 ちなみに、最初のと修正後のprint 
  
 画像リンク
 
 
 画像リンク
 
 
805: 2023/10/08(日)16:16 ID:CixfVofr(4/4) AAS
 つまり 
  
 nurulist = new groundType[tile.GetLength(0), tile.GetLength(1)]; 
  
 これがただNEWして箱を用意してるだけね 
  
 中身は入れてないという事ね 
 コンストラクタに渡したいのかと思うけどね 
806: 2023/10/08(日)16:18 ID:jvAEMxWF(1) AAS
 質問です 
 音声の出力を、 
 VR繋いだら2chにしたいけどVR繋がない時は5.1chにしたいです 
 方法ありますか? 
807(1): 2023/10/08(日)17:49 ID:qKc3n1hD(2/2) AAS
 外部リンク:gist.github.com 
 ありがとうございます 
 倉庫番のソースを出すべきでした 
 後出しする癖は治します 
  
 このソースの100行目付近でvalとtiletype.noneの列挙型で条件判定をしていると思うのですが、その仕組を再現したくて、サンプル作ってたところでした 
 valの中には何が入ってるんでしょうか? 
808(1): 2023/10/09(月)08:42 ID:vRb4YrKY(1) AAS
 >>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だね 
809: 2023/10/09(月)11:43 ID:gtBjEm4L(1) AAS
 デバッガで見ればいいじゃん 
 textはただ読んだだけじゃ型の付与は自動では行われないから全部ただのStringになる 
 だからキャストしないとintにならない 
 その手間があるから配列を2つ使うのであって、キャストが必要ないならそもそも配列を2つ使う意味ない 
810: 2023/10/09(月)12:30 ID:r3yP+wQc(1) AAS
 デバッガで見られないだろうと想定して 
 printで表示して画像まで貼ってあげてる 
 最初の人えらいなあ 
811(1): 2023/10/09(月)14:02 ID:vof/8Dt/(1/4) AAS
 >>808 
 ありがとうございます 
 列挙型で条件判定している理由がいまいちわからないのですが、単純にわかりやすいからそうしているのでしょうか?地面ありは1、地面なしは0のような条件判定でも可能ではありますけども。 
812: 2023/10/09(月)14:04 ID:vof/8Dt/(2/4) AAS
 外部リンク:www.sejuku.net 
 キャストの理解が甘いのでしばらくここやります 
813: 2023/10/09(月)14:43 ID:vof/8Dt/(3/4) AAS
 基礎できてないと駄目ですね 
 急がば回れ 
814(1): 2023/10/09(月)15:25 ID:09LWMBEV(1) AAS
 >>811 
 分かりやすいからだろうね 
 キャストは簡単だよ 
 enumをintにキャストした場合、列挙されてる上から0,1,2,3って順番に変換されるだけ 
 逆も同様 
815(1): 2023/10/09(月)16:23 ID:pKPluVsi(1) AAS
 何のために列挙型にするかというと 
 わかりやすさと安全性だよ 
 この場合はNONEとGROUDしか受け付けないとしばることができる 
 intならいろんな数字が入ることを想定しないといけない 
 この場合は2つで済むから楽で安全だろ? 
 だからintにキャストは安易にしてはダメ 
 C#は基本的に意味のない仕様はないから 
 そういう安易な理解のまま進めない方がいい 
816: 2023/10/09(月)17:09 ID:ETUMQ4bb(1) AAS
 まあ通行可能判定みたいな本当に二つしかない判定ならBoolでいいとは思うけどね 
 それでもうっかりさんはcannotpath=trueなのか、canpath=Trueなのか忘れてしまうからなw 
 そういう時にもenum{canpath,cannotpath}にしとけば誰が見てもわかるし、あとあとslidepathとかdoublecostpathとか追加するのも楽だったりする 
817: 2023/10/09(月)17:16 ID:eLHYY8gC(1) AAS
 まあ拡張性考えるとboolは無いな 
818: 2023/10/09(月)17:33 ID:vof/8Dt/(4/4) AAS
 >>814 
 >>815 
 ありがとうございます 
 キャストについてちょっと勉強してきます 
 また、2日後(*´ω`*) 
819: 2023/10/09(月)17:41 ID:FYLcGTgG(1) AAS
 質問です 
 作ったゲームをUnityroomに公開したところプレイの途中でフリーズしてしまいます 
 exeでもapkでもフリーズはしないのですがどのように調査すれば良いでしょうか 
 もしくはフリーズ自体直し方わかる方いらっしゃいませんか? 
820: 低クオリティでごめんねごめんね 2023/10/09(月)18:05 ID:fHLMLlEn(1) AAS
 どうしてもUnityルームじゃないとあかんのん? 
 イッチじゃダメなん? 
821: 2023/10/09(月)21:15 ID:R+l0SF8j(1) AAS
 いやWebGLの問題かなと思って 
 イッチに上げたらどうなるんだろうサンガツ 
822: 2023/10/10(火)01:12 ID:euWt7ft1(1) AAS
 Animatorのうまい使い方のチュートリアルないですか? 
 チュートリアルというか「State間をつなぎ、変数を動かすことで発火させます」みたいな基本的な使い方じゃなくて、 
 アイドル状態から座る動作はこのように遷移させると自然に見える、とか 
 ダッシュ、ジャンプ、攻撃、着地みたいな連続的な動きをうまく遷移させるコツとか、 
 遷移図がスパゲティにならないような使い方の解説が欲しいんですが 
  
 ウェブサイトじゃなくても教本でも構わんです 
823(1): 2023/10/10(火)10:41 ID:mytr+tEE(1) AAS
 キャストに付いて教えてください 
 キャストと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メソッドは文字列から他の型に変換するためのより柔軟な方法です。 
824: 2023/10/10(火)10:53 ID:UgD80cWG(1) AAS
 イッチでもフリーズしたわ… 
 ワイのゲームが悪そう 
825: 低クオリティでごめんねごめんね 2023/10/10(火)11:07 ID:/knfQQEr(1) AAS
 毎回同じ場所なら原因特定出来そやけど 
 違う場所だと、機能削っていって確認するしか無さそうね 
826(1): 2023/10/11(水)01:05 ID:DCKOkOFp(1) AAS
 もしもtaskを使ってるならそれが原因WebGLでtaskを使うとフリーズする 
827(1): 2023/10/11(水)06:49 ID:gTMFZ2FZ(1) AAS
 >>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` メソッドは文字列から特定の型への変換のために使用されます。 
上下前次1-新書関写板覧索設栞歴
あと 175 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.012s