厄介なバグに繋がる可能性があるコード
class Test { public class Hoge : System.Exception {} }
続きを読む 【.Net C#】System.Exception を継承すると ISerializable がどうのこうのと警告が出る
C#と.Net Frameworkに関する記事
厄介なバグに繋がる可能性があるコード
class Test { public class Hoge : System.Exception {} }
続きを読む 【.Net C#】System.Exception を継承すると ISerializable がどうのこうのと警告が出る
商業レベルの堅牢なソースコードを書くときに、とても役に立ちます。
Visual Studio を使い、自分がクソコードを書いてしまっていないかをパっと確認する方法です。
CancellationTokenSource の必要性が分からない…。
動作環境
.Net 6.0
Visual Studio 2022
この特殊なメソッドの使い方を調べたので、そのまとめ。
「GetEnumerator ってよく聞くけど、使い方はよく分かんない」という人向け。
大きく分けると以下の2つの目的で使用
ゲームを作るときに Unity を使ったりする場合は気にする必要がないのですが、そういったツールを使わない場合、FPS を固定させるために1フレーム未満で処理が完了したら残りの時間待つ…という処理が必要になります。
※本稿での FPS は、ファーストパーソンシューターの略ではなく、フレーム・パー・セカンド(毎秒のフレーム数)のことです。
そうしないと、フレームレートが一定にならないので FPS も一定になりません。
ゲームのスピードが毎フレームバラバラになり、カクカクした動きになります。
FPS 60 の場合、1フレームは 16.6666…ミリセカンド以内に処理する。
FPS 30 の場合、1フレームは 33.3333…ミリセカンド以内に処理する。
ゲームループ(float delta_time) {
ゲームの色んな処理をする
if (1フレーム未満で処理が終わってる) {
余った時間待つ
}
次のフレームの処理へ
}
疑似コードで表現すると、上記のような処理になります。
本稿では、上記疑似コード中の「余った時間待つ」処理を .Net を使って実装する場合の注意点について説明します。
C++ を使っているチームのソースコードを見てるとクロージャという言葉をちょいちょい目にするのですが、C# だと全く見ないですね。
厳密な定義はないっぽい(ぼんやりとした定義はある)ので、人によって認識がバラバラです。
なので、「関数オブジェクトのことっぽいけど、なんでクロージャって言うんだろう?関数オブジェクトとは違うの?」という疑問があったので調べてみました。
なんで .Net にツリー構造のコレクションがないんでしょうね?
TreeNode と TreeView は GUI 用。
Hierarchy は Microsoft SQL Server Analysis Services 用。
TreeElement は Microsoft Docs で検索してもひっかからない。
欲しいのは純粋なツリー構造のデータを扱うためのコレクションであって、余計なメンバは要らない…。
私が探した範疇では .Net には見つかりませんでした。
スナップ処理とは、UI によくある、何かのオブジェクトにある程度近づくと、くっつく(ように見える)処理です。
正確には、一定の場所に留める処理です。
本稿ではスナップ処理を Unity で作る方法について説明します。
細かい点までは説明していませんので、自分ひとりで Unity を使ってゲームを作れる中級者以上の方を対象としています。
執筆時に使用した Unity のバージョンは、2021.2.3f1
Windows10(Home) 64bit 版で作成し、動作確認しています。
ワールドマップや家の壁設置なんかでスナップ処理ってけっこう使うので、ぱっと作れるように汎用スクリプトを作成😆
スナップ処理より、新InputSystemでマウスとゲームパッド制御する方法とか、このプロジェクトで使えるアウトラインシェーダー探したりとかの方に時間がかかりました😅#Unity pic.twitter.com/2ktDR25RsM— おりが@ゲーム製作(Unity) (@dokuro_moe) November 22, 2021
執筆時に扱った Unity のバージョンは 2021.1.5f1 です。
プラットフォームは Windows 10 (64ビット版) を対象としています。
この記事では、Google スプレッドシートを GSS と略記します。