[過去ログ] 【ゲームエンジン】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.028s