関連ブログ
- チャンクダウンローダーを用いたアセットの配布に関する問題対処事例 2024.12.25UE
- [UE5] 元の位置に戻るカメラの実装 2024.12.18UE
- [UE5]難易度変更に対応したシューティングゲームを作ってみよう 2024.12.11UE
CATEGORY
2023.10.11UE5UE/ C++
執筆バージョン: Unreal Engine 5.2
|
UE5から数値入力欄に単位が表示されているものがあります。
この単位付きの入力欄は単位を明示的に設定書くことによって、値の変換も行ってくれます。
例:単位[cm]のプロパティ入力欄に[m]をつけた値で入力すると変換されます。
今回は単位の追加をしてみようと思います。
単位はC++から設定することが可能です。
UPROPERTYマクロのにmeta情報に「Units」か「ForceUnits」を追加し、単位を指定すると表示するようになります。
1 2 3 4 |
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(Units="m")) float UnitValue; UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(ForceUnits="m")) float ForceUnitValue; |
この2つの指定子の違いは異なる単位を入力をした場合の挙動が違います。
例 C++でプロパティの設定をした入力欄の変化
1 2 3 4 5 6 7 8 9 10 |
// メートル(m) UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(Units="m")) float UnitValue; UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(ForceUnits="m")) float ForceUnitValue; // 秒(s) UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(Units="s")) float UnitSeconds; UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(ForceUnits="s")) float ForceUnitSeconds; |
一度同じアクターを再選択することにより単位の変換が行われる場合があります。
※最も適した単位の選定が意図しない動作がするケースがあるので注意!!
例: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に記述されています。 (今後バージョンアップにより追加されるかもしれません。)