そんなときに、ブループリントの変数(ブループリント側で作成した変数)にアクセスする方法を紹介します。
以下の環境で動作確認しています。
Unreal Engine 5.1.1
Visual Studio 2022
Windows 11 Home
続きを読む 【UE5】ウィジェットブループリント(UMG)の変数をバインドすることなく(UPROPERTYを使わずに) C++ で取得する方法【C++】
以下の環境で動作確認しています。
Unreal Engine 5.1.1
Visual Studio 2022
Windows 11 Home
続きを読む 【UE5】ウィジェットブループリント(UMG)の変数をバインドすることなく(UPROPERTYを使わずに) C++ で取得する方法【C++】
SonarLint を使っていなければ気づかなかったシリーズ。
C# は C++ と比べて変なテクニックを山ほど覚える必要がなく、とても扱いやすい言語だと思っていたのですが、最近はそうでもないと思うようになってきました。
using System; // ヒャッハー集団のベースクラス public class HyahhaaBase : IDisposable { public virtual void Dispose() { // アンマネージドリソースを解放する処理 } } // モヒカンヒャッハークラス sealed class MohicanHyahhaa : HyahhaaBase { public override void Dispose() { // 子クラスのアンマネージドリソースを解放する処理 } }
このコードはメモリリークします。
SonarLint については以下の記事で簡単に紹介しています。
その他の、SonarLint を使っていなければ気づかなかったシリーズ。
OpenCV を使うために、NuGet パッケージをインストールしたんですが、まったく使い物にならないので、GitHub からバイナリパッケージをダウンロードしてインストールする必要がありました。
Visual Studio を使い、自分がクソコードを書いてしまっていないかをパっと確認する方法です。
C++ の const の基本的な使い方は以下の記事にまとめています。
今回は言語仕様で明確に決まっていないところ(運用面の問題)について説明します。
ゲームを作るときに Unity を使ったりする場合は気にする必要がないのですが、そういったツールを使わない場合、FPS を固定させるために1フレーム未満で処理が完了したら残りの時間待つ…という処理が必要になります。
※本稿での FPS は、ファーストパーソンシューターの略ではなく、フレーム・パー・セカンド(毎秒のフレーム数)のことです。
そうしないと、フレームレートが一定にならないので FPS も一定になりません。
ゲームのスピードが毎フレームバラバラになり、カクカクした動きになります。
FPS 60 の場合、1フレームは 16.6666…ミリセカンド以内に処理する。
FPS 30 の場合、1フレームは 33.3333…ミリセカンド以内に処理する。
ゲームループ(float delta_time) {
ゲームの色んな処理をする
if (1フレーム未満で処理が終わってる) {
余った時間待つ
}
次のフレームの処理へ
}
疑似コードで表現すると、上記のような処理になります。
本稿では、上記疑似コード中の「余った時間待つ」処理を .Net を使って実装する場合の注意点について説明します。
C++ を使っているチームのソースコードを見てるとクロージャという言葉をちょいちょい目にするのですが、C# だと全く見ないですね。
厳密な定義はないっぽい(ぼんやりとした定義はある)ので、人によって認識がバラバラです。
なので、「関数オブジェクトのことっぽいけど、なんでクロージャって言うんだろう?関数オブジェクトとは違うの?」という疑問があったので調べてみました。
Addressables(旧称 Addressables Assets System)(以下、アドレッサブル)はアセット・バンドルを使いやすくしたものですが、それでも簡単なテストプロジェクトで使おうとすると重く感じます。
パッケージをインストールして、グループ作って、アドレス設定して、ビルドして、非同期読み込みして、あ、using しないとメソッド呼べない、どの名前空間使えばいいんだっけ…?
これだけやることがあれば重く感じるのも無理ないです。
ということで、「手軽にアドレッサブルを使う場合はここを見ればOK」という記事を書くことにしました。
ハンマーを的にぶつけて刺すゲームを想定(物理エンジンあり)。
何もしない場合は、こんな刺さり方もします。
的は板とかコンクリートブロックみたいな硬いものを想定しているので、ハンマーの柄が的に刺さることを想定していない場合はNGになります。
NGの場合はそれっぽく見せる必要があります。
なんで .Net にツリー構造のコレクションがないんでしょうね?
TreeNode と TreeView は GUI 用。
Hierarchy は Microsoft SQL Server Analysis Services 用。
TreeElement は Microsoft Docs で検索してもひっかからない。
欲しいのは純粋なツリー構造のデータを扱うためのコレクションであって、余計なメンバは要らない…。
私が探した範疇では .Net には見つかりませんでした。