UE5
AssetManagerでPrimaryAssetを読み込む手順を紹介してる記事はまぁまぁある。しかし、C++での非同期読み込みについて言及してる日本語の記事が少ないと思ったので、備忘録がてら記載しておこうと思う。前提として、今回の実装は● DataTableにC++からアクセス…
UnrealEngineは素晴らしいエンジンだ。ゲーム作りに必要な機能はほぼ全て標準搭載されている。入力検知、物理計算、UI、3Dモデルのボーンやメッシュの調整機能、モーションとアニメーション、ユーザーデータやアセットの管理機能等々。それらの豊富でリッチ…
UIを全画面で表示している際に、マウスの入力がUIの奥にあるゲーム空間まですり抜けないよう入力を阻止するUIを、一般的にモーダルと呼んだりする。大抵は、全画面で表示しているUIの背景画像がその役割を果たすことが多い。なので、全画面のUIを表示してる…
UEのWidgetにはToolTipという機能が備わっており、有効化すると、そのWidgetにマウスカーソルを合わせた時に概要説明用の小さなUIを表示することが出来る。これは、ListViewに表示しているEntryのWidgetのToolTipを有効化し、マウスカーソルを合わせた状態の…
以前、正規表現を用いて文字の抽出を行う必要に駆られ、実装しようとFRegexMatcherとFRegexPatternを試した事がある。だけど、空の文字が返ってきたり、正規表現にそぐわない文字列に整形されて返ってきたりと、どうにも釈然としない挙動をしてたので諦めた…
UEでC++使ってると、特にファイル名に困る。例えば、Widgetクラスと、そのWidgetに表示するためのデータを保持するためのクラスを作るとする。通常のC++ならば、Widgetクラスを宣言した後にそのインナークラスとしてデータクラスを宣言したり、名前空間で区…
HorizontalBoxでTextBlockを並べていたのだけど、Paddingで間隔を調整すると後続のUIにTextBlockが食い込んで表示がおかしい。以下の画像は、左からImage、TextBlock①、TextBlock②という順番で、HorizontalBoxの子としてWidgetを配置している。TextBlock①のP…
ListViewには、Entryとして表示するWidgetそのものではなく、EntryであるWidgetに表示したいデータをItemとして登録することになる。その後、ListViewからEntry側に「このデータ表示してほしい」というリクエスト(OnListItemObjectSet)を行い、そこで受け…
プログラミングにおけるデザインパターンの一つに、Facadeパターンという設計がある。簡単に説明すると、一つの目的に対して複雑で高度な処理を行う必要になる場合、それをAPIの内部で全て処理し、利用者には極めてシンプルな状態でインターフェースを提供す…
Delegateに登録できるのはUFUNCTIONでマークした関数だけだぞ (ΦωΦ)
C++を使う時、C++って面白いなぁと思うことはたくさんある。その内の一つとして、依存度を考えて設計するというのがある。C++にはインターフェースやテンプレート等を始めとし、設計としてもコールバックを駆使するなど、依存度を下げるための仕組みがたくさ…
今まで、C++のファイルを作成する時にフォルダを指定せず、全部ルートの所にぶち込んでました。ファイルを作成するという行いにおいてフォルダを分けないというのがいかに愚かしいか分かっていたはずなのに。。まぁそこまでC++書かないだろうと持ってたのも…
FTableRowBaseを継承して実装した構造体をRowとしたデータテーブルがあります。このRowに指定した構造体にメンバを追加した時、コンパイルしてもBPに反映されなくて困ってたけどエディター再起動したら反映された。前にも同じ現象を見て、データテーブルに設…
男の子なら誰しも「Load Game from Slotをした時に ・成功したら特定の型にCastした状態のインスタンスを返す ・失敗したら特定の型でnewしたインスタンスを返す という機能」 を実装したくなるものだと思う。ここで言う特定の型とは、SaveGameを継承したク…
実際、UE4の頃からたまに触ってはいた。 3ヶ月~半年に1回くらいの割合。 でも、当時はUnityにハマっていたのと、UEエディターの見た目やフォントが好きじゃなくてすぐにやめてばかりだった。 なので、まともにUEを触り始めたのはここ1ヶ月くらいのことである…
最近、というほど最近でも無いが、UEを使うようになってからC++を使うことが増えた。 元々C++は実務で使っていたのだが、最近その機会が全くと言っていいほど無かった。 UEを使うようになって久しぶりに触ってるが、やはりC++は良い。 まず見た目がかっこい…
今回、あるクラスのインスタンスの配列を返す関数をC++で実装して、それをBPで使おうとした。 すると、戻り値の型の前に”LIVECODING”という文字が付与された謎のパラメータが返ってきてしまい、配列の要素であるクラスの関数を呼び出せなかった。 調べてみる…