はじめに
この記事はUnreal Engine (UE) Advent Calendar 2022の12日目の記事です
UnrealEngineは設定ファイルであるiniファイルで様々な設定をプロジェクトメンバー全員に共有することが出来る
しかし、大規模で開発している際には自分にだけ有効な設定だったり、特定の職位の人物にだけ有効にしたい設定が出てきたりする
内容によってはコンソールコマンドで切り替えて貰ったりすることや、プログラマに独自に設定できる項目を追加できる方法もあるが今回はiniファイルで簡単に解決できる方法で解決する
今回は個別のユーザのスクリーン上にだけエラーやワーニングを出力する方法をまとめる
開発環境
UE5.0.3
Microsoft Visual Studio Community 2022 Version 17.2.6
iniファイルとは
通常、UnrealEngineの設定を共通で変える場合は"DefaultEngine.ini"や"DefaultGame.ini"などのファイルを編集する
プロジェクト独自の設定を共有しようとするなら"UserGame.ini"がある
しかし、この方法ではEngineの設定を個別に書き換えることはできない
DefaultEngine.iniではプロジェクトデータをバージョン管理ツールで共有している全ユーザが共有することになる設定ファイルであるし、それを各員に編集させるのは操作ミスで誤った情報を書き換えてしまうリスクがある
バージョン管理ツールのignore機能で除外できる設定ファイルを使ってEngineの設定を書き換えたいがそれはどうすればいいのかというのが本題
スクリーン上にエラーやワーニングを出力する方法
Config/DefaultEngine.iniに以下のように書き換えることで可能である
[/Script/Engine.Engine]
DurationOfErrorsAndWarningsOnHUD=3.0
※なお、ここ数字は1以上ならなんでもいい
DurationOfErrorsAndWarningsOnHUDはデフォルトではBaseEngine.iniで以下のように0が代入されており、自分から弄らない限りは有効になっていない
; This is the startup state of the OnScreenDebugMessage system
bEnableOnScreenDebugMessages=true
; This shows errors and warnings on screen
DurationOfErrorsAndWarningsOnHUD=0
しかし、これではこのプロジェクトデータを持っている全員にエラーやワーニングが出力されてしまうので想定と異なる挙動となってしまう
How to
対象のユーザ以外の設定をDefaultEngine.iniに記述する
"Config/DefaultEngine.ini"に以下のように書き換える
[/Script/Engine.Engine]
bEnableOnScreenDebugMessages=False
DurationOfErrorsAndWarningsOnHUD=3.0
こうすることでDurationOfErrorsAndWarningsOnHUDが1以上になっているので、ワーニングとエラーがスクリーン上に出るようにはなってはいるが、bEnableOnScreenDebugMessagesでOFFにしていることになる
つまり、大多数の”対象ではないユーザ”には体験としては同一の状態となる
DefaultEngine.iniより優先度の高いEngine.iniファイルを作成する
以下のPathでiniファイルを作成する
【ProjectDir】\Config\UserEngine.ini
bEnableOnScreenDebugMessagesを書き換える
UserEngine.iniを以下のように追記する
[/Script/Engine.Engine]
bEnableOnScreenDebugMessages=True
こうすることでDefaultEngine.iniで書き換えた「DurationOfErrorsAndWarningsOnHUDが1以上になっているので、ワーニングとエラーがスクリーン上に出るようにはなってはいるが、bEnableOnScreenDebugMessagesでOFFにしている」という状態をさらに書き換えてスクリーン上にワーニングとエラーが出力されるようになる
バージョン管理ツールでUserEngine.iniをignore
これは環境によるので詳細な方法は記述しない
gitやperforce、SVNでそれぞれ調べてほしい
結果
テストコード
ワーニングを出力するために以下のようなテストコードを書いた
void ATestCharactor::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
UE_LOG(LogTemp, Warning, TEXT("Warning!! from TestCharactor"));
}
実行
おわりに
今回の方法で任意の対象のユーザにのみUserEngine.iniをバージョン管理ツールの対象外にしたうえで編集してもらうことで安全にEngine設定を書き換える方法を紹介した
検索してもUserEngine.iniに言及している記事はあまり見当たらなかったし、DurationOfErrorsAndWarningsOnHUDやbEnableOnScreenDebugMessagesについても言及している記事は見当たらなかったので備忘録としてまとめた