【UE5】詳細で良く見るアセットの種類にクラスでフィルターをかけてコンボボックスから候補一覧を選択するとそのサムネイルも表示してくれるウィジェットを EditorUtilityWidget で使う方法【C++】

Unreal Engine のエディタでスケルタルメッシュやマテリアルなどを選択するときに使うウィジェットがあります。
アイキャッチ画像で示した通りですが、マテリアルやスケルトンなんかを選択するときも、このウィジェットが使われています。

これ、よく見るウィジェットなので、Editor Utility Widget(以下、EUW)でも簡単に使えるだろう…と思い、EUW のデザイナー画面で「パレット」にないか探してみるのですが見つかりません。

実はこれ、ウィジェット(UWidget)ではなく、スレート(Slate)です。
スレートについて細かい説明は割愛しますが、このままでは、Editor Utility Button ウィジェットなどのように、デザイナー画面でキャンバスパネルなどに配置することができません。

本稿では、このスレートをウィジェットとして使えるようにする方法を共有します。
C++ を使う必要があるため、EUW の実装に詳しいテクニカルアーティストやエンジニアが対象となります。

動作環境
Unreal Engine 5.4.4, 5.5 Preview
Windows 11 Home
Visual Studio 2022

“【UE5】詳細で良く見るアセットの種類にクラスでフィルターをかけてコンボボックスから候補一覧を選択するとそのサムネイルも表示してくれるウィジェットを EditorUtilityWidget で使う方法【C++】” の続きを読む

【UE5】複数の EditorUtilityWidget を組み合わせてひとつのウィジェットを構築する方法【C++】

本稿では Unreal Engine 5 の C++ を使って複数の子 Editor Utility Widget(エディタユーティリティウィジェット、以下 EUW) を、ひとつの親 EUW にはめ込んで表示する方法について共有します。
EUW のマニアックな使い方に興味があるエンジニア向けです。

動作環境
Unreal Engine 5.4.3 および 5.4.4
Windows 11 Home
Visual Studio 2022

“【UE5】複数の EditorUtilityWidget を組み合わせてひとつのウィジェットを構築する方法【C++】” の続きを読む

【UE5】LineTrace(レイキャスト)の使い方【C++】

本稿では、UE5 C++ の LineTraceMultiByProfile 関数を使った際に、私が分かりにくいと感じた点について調査し、分かったことを共有したいと思います。
Unreal Engine の C++ の使い方を習得している方が対象となります。

動作環境
Visual Studio 2022
Unreal Engine 5.4.1
Windows 11 Home

“【UE5】LineTrace(レイキャスト)の使い方【C++】” の続きを読む

【C#】その例外、使ってもいいけど使っちゃダメです

Sonar Lint を使わなければ気づかなかったシリーズ

Sonar Lint で警告を食らう度に記事を書いてる気がしますが、有用な情報なのでスルーしない方が良いと思います。

“【C#】その例外、使ってもいいけど使っちゃダメです” の続きを読む

古(いにしえ)の技術、固定少数点数とは?

少数を100倍とか10000倍とかして整数で扱う手法です。

浮動小数 3.14 ⇒ 固定少数 314

今のゲーム開発では使わなくなったんじゃないでしょうか。
正確には「固定少数点数」ですが、長いので「固定少数」と呼ぶことにします。

メリット
1.昔のハードウェアでは float や double より int の方が計算が速かった。
2.float や double 特有の誤差が出ない。

デメリット
1.int を float や double に変換するのが面倒。
2.速度の問題なら、今のハードウェアでは float か double で良い。
3.誤差の問題なら、誤差が出ない実数型を使えば良い。

“古(いにしえ)の技術、固定少数点数とは?” の続きを読む

【C#】OpenAI の GPT 3.5 を使って AI とチャットするプログラムを作る【.Net Standard 2.0】

興味があったので、こちらの記事を参考に ChatGPT と対話するコンソールアプリを C# で作りました。
今回作成したのは、OpenAI との通信部分だけで、アバターのモデル表示などは扱っていません。

本稿では、OpenAI の API を利用し、GPT 3.5 で通信する方法、OpenAI の API を利用する際の注意点などについて説明します。
本稿に掲載しているソースコードは、以下の環境で動作確認しています。

Visual Studio 2022
.Net Standard 2.0
C# 7
Windows 11 Home

“【C#】OpenAI の GPT 3.5 を使って AI とチャットするプログラムを作る【.Net Standard 2.0】” の続きを読む

【Unity】C#スクリプトをDLL化する手順

この記事では Unity の C# スクリプトをDLL化する手順と注意点について説明します。

執筆時に扱った Unity のバージョンは 2021.1.6f1 です。
プラットフォームは Windows 10 (64ビット版) を対象としています。

2023/10/15 修正
Visual Studio 2022 ではターゲットフレームワークを .Net Standard 2.0 に変更する方法が違うので記事を修正しました。

“【Unity】C#スクリプトをDLL化する手順” の続きを読む

【.Net】アプリのパスを取得する方法っていくつもあるけど何か違うの?【C#】

.Net アプリ パス…で検索すると、だいたい以下の4つのメソッドとプロパティが見つかります。
どの記事を見ても、どれを使っても良い…みたいなことが書いてあります。

  • Application.StartupPath
  • Assembly.GetExecutingAssembly().Location
  • AppDomain.CurrentDomain.BaseDirectory
  • Environment.CurrentDirectory

でも、ふと疑問がわきます。

「どれを使っても同じ結果を得られるなら、なんで4通りもの方法が用意されているんだろう?」

同じものを4つに分ける意味はありません。
本当に「同じ」なら、1つあれば良いはずです。

実はこれ、作成するアプリや目的によって使い分ける必要があります。

“【.Net】アプリのパスを取得する方法っていくつもあるけど何か違うの?【C#】” の続きを読む

【UE5】ウィジェットブループリント(UMG)の変数をバインドすることなく(UPROPERTYを使わずに) C++ で取得する方法【C++】

こちらの記事で、ウィジェットブループリントと C++ のソースコードをバインドする方法を紹介しましたが、バインドできない状況がまれにあります。
そんなときに、ブループリントの変数(ブループリント側で作成した変数)にアクセスする方法を紹介します。

以下の環境で動作確認しています。

Unreal Engine 5.1.1
Visual Studio 2022
Windows 11 Home

“【UE5】ウィジェットブループリント(UMG)の変数をバインドすることなく(UPROPERTYを使わずに) C++ で取得する方法【C++】” の続きを読む

【C#】IDisposable を継承する際に Dispose パターンの知識が必要になる理由

SonarLint を使っていなければ気づかなかったシリーズ。
C# は C++ と比べて変なテクニックを山ほど覚える必要がなく、とても扱いやすい言語だと思っていたのですが、最近はそうでもないと思うようになってきました。

using System;

// ヒャッハー集団のベースクラス
public class HyahhaaBase : IDisposable {
  public virtual void Dispose() {
    // アンマネージドリソースを解放する処理
  }
}

// モヒカンヒャッハークラス
sealed class MohicanHyahhaa : HyahhaaBase {
  public override void Dispose() {
    // 子クラスのアンマネージドリソースを解放する処理
  }
}

このコードはメモリリークします。

SonarLint については以下の記事で簡単に紹介しています。

その他の、SonarLint を使っていなければ気づかなかったシリーズ。

“【C#】IDisposable を継承する際に Dispose パターンの知識が必要になる理由” の続きを読む