BLOGブログ

2023.10.11UE5UE/ C++

[UE5]プロパティの数値入力欄に単位を追加しよう

執筆バージョン: Unreal Engine 5.2

UE5から数値入力欄に単位が表示されているものがあります。

この単位付きの入力欄は単位を明示的に設定書くことによって、値の変換も行ってくれます。
例:単位[cm]のプロパティ入力欄に[m]をつけた値で入力すると変換されます。

今回は単位の追加をしてみようと思います。

指定方法

単位はC++から設定することが可能です。
UPROPERTYマクロのにmeta情報に「Units」か「ForceUnits」を追加し、単位を指定すると表示するようになります。

この2つの指定子の違いは異なる単位を入力をした場合の挙動が違います。

  • Unitsの場合は値の大きさに最も適した単位で表示されます。
  • ForceUnitsの場合は設定した単位で表示されます。

例 C++でプロパティの設定をした入力欄の変化

一度同じアクターを再選択することにより単位の変換が行われる場合があります。
※最も適した単位の選定が意図しない動作がするケースがあるので注意!!
例:Gif画像内ではUnitSecondsの単位変換時に誤差が発生してます。

プロパティに入っている変換されていない値を確認したい場合は入力欄にカーソルをあわせると元の値を表示します。

基本、エンジン側で使用している部分では「ForceUnits」を利用しているケースが多いようです。

指定できる単位

指定できる単位はエンジン側で決められています。
UE5.2 現在では以下の単位が指定出来ます。

距離

指定文字 単位
Micrometers
um
ミクロメートル
Millimeters
mm
ミリメートル
Centimeters
cm
センチメートル
m メートル
Kilometers
km
キロメートル
Inches
in
インチ
Feet
ft
フィート
Yards
yd
ヤード
Miles
mi
マイル
Lightyears
ly
光年

角度

指定文字 単位
Degrees
deg
度・度数法
Radians
rad
ラジアン・弧度法

速度

指定文字 単位
CentimetersPerSecond
cm/s
秒速センチメートル
MetersPerSecond
m/s
秒速メートル
KilometersPerHour
km/h
時速キロメートル
MilesPerHour
mi/h
時速マイル

温度

指定文字 単位
Celsius
C
degC
摂氏・セルシウス度
Farenheit
F
degF
華氏・ファーレンハイト度
Kelvin
K
ケルビン

重さ

指定文字 単位
Micrograms
ug
ミクログラム
Milligrams
mg
ミリグラム
Grams
g
グラム
Kilograms
kg
キログラム
MetricTons
t
トン
Ounces
oz
オンス
Pounds
lb
ポンド
Stones
st
ストーン

指定文字 単位
Newtons
N
ニュートン
PoundsForce
lbf
重量キログラム
KilogramsForce
kgf
重量ポンド

周波数

指定文字 単位
Hertz
Hz
ヘルツ
Kilohertz
KHz
キロヘルツ
Megahertz
MHz
メガヘルツ
Gigahertz
GHz
ギガヘルツ
RevolutionsPerMinute
rpm
回転/分

データ容量

指定文字 単位
Bytes
B
バイト
Kilobytes
KB
KiB
キビバイト(2の10乗)
Megabytes
MB
MiB
メビバイト(2の20乗)
Gigabytes
GB
GiB
ギビバイト(2の30乗)
Terabytes
TB
TiB
テビバイト(2の40乗)

明るさ

指定文字 単位
Lumens
lm
ルーメン
Candela
cd
カンデラ
Lux
lx
ルクス
CandelaPerMeterSquared
cd/m2
CandelaPerMeter2
カンデラ毎平方メートル

時間

指定文字 単位
Nanoseconds
ns
ナノ秒
Microseconds
us
マイクロ秒
Milliseconds
ms
ミリ秒
Seconds
s
Minutes
min
Hours
hrs
Days
dy
Months
mth
Years
yr

解像度

指定文字 単位
ppi
dpi
pixels per inch・dots per inch
 
これらの定義はUnitConversion.cppに記述されています。
(今後バージョンアップにより追加されるかもしれません。)

まとめ

C++から指定する必要がありますが、この機能を利用するとプロパティ名にわざわざ単位の名前を追加しなくても、単位がわかるようになります。
様々な単位に対応しており、UnrealEngine5になりゲーム以外の色々な分野を想定していると感じますね。
(でも、光年って何のシミュレーションに使う想定なんでしょうね…)