[過去ログ] 【ゲームエンジン】Unityなんでも質問スレpart16 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
452: 名前は開発中のものです。 [sage] 2025/03/18(火) 13:14:10.60 ID:gLHpA01b(2/3) AAS
Unityは古いバージョンのC#だからいまだにforeachとかでループ回すレガシーな書き方を好むプログラマも多そうな印象
453: 名前は開発中のものです。 [] 2025/03/18(火) 13:17:12.64 ID:3FO5OPQZ(1) AAS
個人的にはエディタの拡張機能ではLINQ使ってるけどリリースビルドには一切含めないようにしてる
LINQは使うたびにGCが過剰に発生するのが負荷が高いと言われる所以だから
作ってるゲームがそれを許容できるかによる
454: 名前は開発中のものです。 [sage] 2025/03/18(火) 13:18:43.11 ID:PmhHb3Ev(3/5) AAS
LINQ重いから
知ったかクライアントは仕様書で禁止してくるよ
455: 名前は開発中のものです。 [sage] 2025/03/18(火) 13:42:44.67 ID:gLHpA01b(3/3) AAS
ゲーム開発で使うとしたらエディタとか初期化に限られるよねやっぱり
業務アプリでも呼び出し頻度高いところとか大量データ処理する所では使わないようにしてる
456: 名前は開発中のものです。 [sage] 2025/03/18(火) 14:19:09.75 ID:iKQuGUKe(1) AAS
「距離の判定でルート使ったところで1msもかからん」って言ったら自称開発者が「1msも変わったらヤバイだろ」って突っ込んできたんだけどこいつほんとに開発者か?ってなってる
「1msも変わらん」って言葉の真意は1ms以下で無視できるレベルで小さい(実際は0.1ms程度)って伝わらないんか
というか距離の判定で1msかかるのは設計ミスやろ
457: 名前は開発中のものです。 [] 2025/03/18(火) 14:25:55.70 ID:DhM0KiUV(1) AAS
API単位だと1msと0.001msでかなり意味違うから額面通り受け取られたら普通にツッコまれる
Instantiateくらい重い処理なら別だけど
458(1): 名前は開発中のものです。 [sage] 2025/03/18(火) 15:31:51.43 ID:QNX4HnNW(1) AAS
曖昧な発言する雑なやつが何で威張ってんの
459: 名前は開発中のものです。 [sage] 2025/03/18(火) 16:14:51.76 ID:yU/sQVqt(1) AAS
>>458
それ君w
460(1): 名前は開発中のものです。 [sage] 2025/03/18(火) 17:28:29.76 ID:E1ZcQ+uo(4/4) AAS
240 FPS出そうと思ったら、フレーム辺り4ms強しかないからな
461(3): 名前は開発中のものです。 [sage] 2025/03/18(火) 18:41:26.38 ID:PmhHb3Ev(4/5) AAS
現在のスクリプトのフルパスを返す関数があるのですけど、
それの一個親のフォルダ名を取得するのはどうしたらいいですか
/でsplitして最後のアイテムを消すしかない?
462(1): 名前は開発中のものです。 [sage] 2025/03/18(火) 18:55:35.42 ID:phvr3KFu(1) AAS
>>461
Path.GetDirectoryName()で取れる
463(1): 名前は開発中のものです。 [sage] 2025/03/18(火) 18:57:51.16 ID:GOtEBAFE(1) AAS
>>460
えっ?
464(3): 名前は開発中のものです。 [] 2025/03/18(火) 19:04:36.79 ID:UdWYMzyu(1/2) AAS
>>462
いや、
string filePath = @"C:\hoge\fuga\hoga.txt";
に対してPath.GetDirectoryName(filePath)すると
@"C:\hoge\fuga"
が取れる
>>461が欲しがってるのはfugaの部分だけじゃない?
/と\が混在してる場合を考慮して
string filePathSplited = Path.GetDirectoryName(filePath).Replace("/", "\\").Split('\\');
string dirName = filePathSplited[filePathSplited.Length - 1];
あるいはSystem.Linqを使えば
filePath.Replace("/", "\\").Split('\\').Last();
465: 名前は開発中のものです。 [] 2025/03/18(火) 19:07:30.14 ID:UdWYMzyu(2/2) AAS
>>463
1秒は1000msだから
1000 / 240 = 4.16666667
1フレームあたり4ms強
466(1): 名前は開発中のものです。 [sage] 2025/03/18(火) 20:26:15.96 ID:KSYQbbOt(1/2) AAS
>>464
そんな面倒なことしなくてもGetFileNameとかでいけるのでは?
パス操作でSplit使うのは最終手段
467: 名前は開発中のものです。 [] 2025/03/18(火) 20:43:08.35 ID:2C3TH5ss(1/3) AAS
>>466
GetFileNameだとhoga.txtが取れてしまう
fugaの部分だけを取りたいなら回りくどいけど>>464の方法くらいしか思いつかん・・・
468: 名前は開発中のものです。 [] 2025/03/18(火) 20:44:59.12 ID:2C3TH5ss(2/3) AAS
もっとキモい話になるけど、Path.GetDirectoryNameはディレクトリパスだけを返してくれる便利な魔法の関数などではなく
\または/で区切って最後の部分を除外した文字列を返す("C:\hoge\fuga\hoga.txt"→"C:\hoge\fuga")
だけで、Path.GetFileNameも同じく
\または/で区切って最後の部分のみ返す("C:\hoge\fuga\hoga.txt"→"hoga.txt")
だけなので、理論的には
Path.GetFileName(Path.GetDirectoryName("C:\hoge\fuga\hoga.txt"))
でfugaの部分を取れるっちゃ取れる
でも流石にコレはキモすぎるから>>464かなあ、正直微妙だけど
469(1): 名前は開発中のものです。 [] 2025/03/18(火) 20:45:44.30 ID:d603JaOd(1) AAS
DirectoryInfoとか
470: 名前は開発中のものです。 [] 2025/03/18(火) 20:54:32.14 ID:2C3TH5ss(3/3) AAS
>>469
string filePath = @"C:/hoge/fuga/hoga.txt";
DirectoryInfo di = new DirectoryInfo(filePath);
Console.WriteLine ($"di.Name={di.Name}");
Console.WriteLine ($"di.FullName={di.FullName}");
Console.WriteLine ($"di.Parent.Name={di.Parent.Name}"); // これでfuga取れたわ
Console.WriteLine ($"di.Parent.FullName={di.Parent.FullName}");
三月
471: 名前は開発中のものです。 [sage] 2025/03/18(火) 21:20:55.93 ID:KSYQbbOt(2/2) AAS
自分が想像してたのは正にそのGetDirectoryNameしてGetFileNameだった
確かにキモいっちゃキモいね
でもDirectoryInfoが一番しっくりくるし知れてよかった
472(1): 名前は開発中のものです。 [sage] 2025/03/18(火) 22:42:01.99 ID:PmhHb3Ev(5/5) AAS
>>461ですが
けっきょく当該ファイルを1個下(取得できているパス)に移動することで対処しました
ありがとうございます
473: 名前は開発中のものです。 [sage] 2025/03/18(火) 22:57:09.30 ID:m9QFBZXL(1) AAS
>>472
よかったね
474: 名前は開発中のものです。 [] 2025/03/19(水) 15:24:38.86 ID:POwZfcZS(1) AAS
>>448なんだテメーは?
ラムダ式が匿名関数だからワイが関数名を命名してやったのに合わせてやれよってどういう意味だよ?
何に何を合わせるんだよ?喧嘩売ってんのかこら?ぶっ◯すぞ?m9⎛´・ω・`⎞;y=ー(゚д゚)・・∵. ドーン!
475(2): 名前は開発中のものです。 [sage] 2025/03/20(木) 11:35:09.36 ID:zYh3iRuS(1/2) AAS
コールチンの件ですけど
処理1; ←重い
処理2;
処理3;
と列記したときに、処理1がたまたま重いー処理だったときに
処理2と3が先に実行されてしまうことがあるって話なんですか?
つまり処理1の結果をうけて次の処理にいきたいときは、処理1はコールチンにするべきってことです?
476: 名前は開発中のものです。 [] 2025/03/20(木) 12:34:26.26 ID:nGIipXCH(1) AAS
同期処理で処理2,3が先に実行されることなんてありえないね!
コルーチンは非同期処理だから重い処理1を後回しにしたいならコルーチンにして先に処理2,3を実行することはできるね!
処理1の結果を受けて処理2,3をしたいならコルーチンにしちゃ駄目だね!m9⎛´・ω・`⎞ドーン!
上下前次1-新書関写板覧索設栞歴
あと 526 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.038s