UE4 エディタ拡張・テキストブロック(ラベル)ウィジェット(STextBlock)
他ではよく「ラベル」と呼んでいるコントロールですね。
ロジカルビートさんのこのページとエンジンのソースとにらめっこしていました。
・【UE4】エディタ拡張(ラベル編)
http://logicalbeat.jp/blog/733/
テキストブロックウィジェットを使うには「STextBlock」クラスを使います。
雑ですがこんな感じの記述になります。FText WidgetText = FText::Format(
LOCTEXT("WidgetText", "STextBlock。コミケまであと {0}日と{1}時間{2}分\nどうもFText::Formatは引数が4つまでしかいけなさそう。\n文字列操作にはFStringを使おう!"),
FText::FromString(FString::FromInt(Days)),
FText::FromString(FString::FromInt(Hours24)),
FText::FromString(FString::FromInt(Minutes))
);
~省略
SNew(SVerticalBox)
+ SVerticalBox::Slot()
.AutoHeight()
[
SNew(STextBlock)
.Text(WidgetText)
.Font(FSlateFontInfo("Veranda", 16))
.ColorAndOpacity(FSlateColor(FLinearColor(1.0f, 1.0f, 0.0f, 1.0f)))
.ShadowOffset(FVector2D(2.0f, 2.0f))
.HighlightColor(FLinearColor(0.0f, 1.0f, 1.0f))
.HighlightText(LOCTEXT("HighlightText", "FText::Format"))
.AutoWrapText(true)
.Margin(FMargin(16, 16, 16, 16))
.OnDoubleClicked_Raw(this, &FUtilityModule::OnDoubleClickedButtonLabel)
]
~省略
FReply FUtilityModule::OnDoubleClickedButtonLabel()
{
return FReply::Handled();
}
結果はこんな感じに。

STextBlock の各プロパティの機能はこんな感じになります。
・Text
表示文字列です。FText 型で指定します。
・Font
表示する文字列のフォントです。
FSlateFontInfo 型を使って、フォント名とフォントサイズを指定します。
・ColorAndOpacity
表示する文字列の色です。
FSlateColor 型で指定します。
・ShadowOffset
フォントにドロップシャドウを付ける場合のオフセット(xy)を指定します。
FVector2D 型で指定します。
・HighlightText
ハイライト扱いにする文字列を指定します。FText 型で指定します。
・HighlightColor
ハイライト時のカラーを指定します。FLinearColor 型で指定します。
・AutoWrapText
文字列がはみ出る時に自動で折り返すかの指定をします。
・Margin
文字列を表示するときのマージン(スペース領域)を指定します。
FMargin 型で上下左右を指定します。
・OnDoubleClicked
ダブルクリックしたときの関数を指定します。
今回は自分自身を渡しているので Raw の名前の関数を使っています。
何気にダブルクリックの反応を受け取れたのがよかったです。クリックは無理そうでしたが。
UE4のスレートでの文字列表示はほとんどこの STextBlock を使うので覚えると便利そうですね。
| UE4 | 15:34 | comments:0 | trackbacks:0 | TOP↑