こっこのぶろぐ

kockoにまつわる何かを書いていく

UE5

C++でPrimaryAssetのAsyncLoadを実現する方法【UE5】

UE5

AssetManagerでPrimaryAssetを読み込む手順を紹介してる記事はまぁまぁある。しかし、C++での非同期読み込みについて言及してる日本語の記事が少ないと思ったので、備忘録がてら記載しておこうと思う。前提として、今回の実装は● DataTableにC++からアクセス…

Unityに逃げようとして色々試してみた結果1日目【Unity2022.3、UE5】

UnrealEngineは素晴らしいエンジンだ。ゲーム作りに必要な機能はほぼ全て標準搭載されている。入力検知、物理計算、UI、3Dモデルのボーンやメッシュの調整機能、モーションとアニメーション、ユーザーデータやアセットの管理機能等々。それらの豊富でリッチ…

全画面でWidgetを表示した時にカメラが動く件について【UE5】

UE5

UIを全画面で表示している際に、マウスの入力がUIの奥にあるゲーム空間まですり抜けないよう入力を阻止するUIを、一般的にモーダルと呼んだりする。大抵は、全画面で表示しているUIの背景画像がその役割を果たすことが多い。なので、全画面のUIを表示してる…

ToolTipで表示するWidgetの表示がチラつく問題について【UE5】

UE5

UEのWidgetにはToolTipという機能が備わっており、有効化すると、そのWidgetにマウスカーソルを合わせた時に概要説明用の小さなUIを表示することが出来る。これは、ListViewに表示しているEntryのWidgetのToolTipを有効化し、マウスカーソルを合わせた状態の…

文字列から記号を削除したかった者のFString【UE5】

UE5

以前、正規表現を用いて文字の抽出を行う必要に駆られ、実装しようとFRegexMatcherとFRegexPatternを試した事がある。だけど、空の文字が返ってきたり、正規表現にそぐわない文字列に整形されて返ってきたりと、どうにも釈然としない挙動をしてたので諦めた…

なんかアレだよな【UE5】

UE5

UEでC++使ってると、特にファイル名に困る。例えば、Widgetクラスと、そのWidgetに表示するためのデータを保持するためのクラスを作るとする。通常のC++ならば、Widgetクラスを宣言した後にそのインナークラスとしてデータクラスを宣言したり、名前空間で区…

PaddingでWidgetの配置を整形すると表示がおかしくなる件について【UE5】

UE5

HorizontalBoxでTextBlockを並べていたのだけど、Paddingで間隔を調整すると後続のUIにTextBlockが食い込んで表示がおかしい。以下の画像は、左からImage、TextBlock①、TextBlock②という順番で、HorizontalBoxの子としてWidgetを配置している。TextBlock①のP…

ListViewで表示しているアイテムの表示内容を更新したい時の方法【UE5】

UE5

ListViewには、Entryとして表示するWidgetそのものではなく、EntryであるWidgetに表示したいデータをItemとして登録することになる。その後、ListViewからEntry側に「このデータ表示してほしい」というリクエスト(OnListItemObjectSet)を行い、そこで受け…

FacadeパターンがUEで有効であることの考察【UE5】

UE5

プログラミングにおけるデザインパターンの一つに、Facadeパターンという設計がある。簡単に説明すると、一つの目的に対して複雑で高度な処理を行う必要になる場合、それをAPIの内部で全て処理し、利用者には極めてシンプルな状態でインターフェースを提供す…

Delegateに登録できるのはUFUNCTIONでマークした関数だけだぞおじさん【UE5】

UE5

Delegateに登録できるのはUFUNCTIONでマークした関数だけだぞ (ΦωΦ)

依存度を下げることの重要性について【UE5】

UE5

C++を使う時、C++って面白いなぁと思うことはたくさんある。その内の一つとして、依存度を考えて設計するというのがある。C++にはインターフェースやテンプレート等を始めとし、設計としてもコールバックを駆使するなど、依存度を下げるための仕組みがたくさ…

フォルダ分けしたヘッダーファイルで他のファイルがインクルード出来ない件について【UE5】

UE5

今まで、C++のファイルを作成する時にフォルダを指定せず、全部ルートの所にぶち込んでました。ファイルを作成するという行いにおいてフォルダを分けないというのがいかに愚かしいか分かっていたはずなのに。。まぁそこまでC++書かないだろうと持ってたのも…

自前の構造体がDataTableと微妙に足並み揃わない件について【UE5】

UE5

FTableRowBaseを継承して実装した構造体をRowとしたデータテーブルがあります。このRowに指定した構造体にメンバを追加した時、コンパイルしてもBPに反映されなくて困ってたけどエディター再起動したら反映された。前にも同じ現象を見て、データテーブルに設…

ロードもNewもノード一つでやりたいよ俺は【UE5】

UE5

男の子なら誰しも「Load Game from Slotをした時に ・成功したら特定の型にCastした状態のインスタンスを返す ・失敗したら特定の型でnewしたインスタンスを返す という機能」 を実装したくなるものだと思う。ここで言う特定の型とは、SaveGameを継承したク…

UEをちゃんと使い初めてから多分1ヶ月くらい経った話【UE5】

実際、UE4の頃からたまに触ってはいた。 3ヶ月~半年に1回くらいの割合。 でも、当時はUnityにハマっていたのと、UEエディターの見た目やフォントが好きじゃなくてすぐにやめてばかりだった。 なので、まともにUEを触り始めたのはここ1ヶ月くらいのことである…

BPとC++のバランス【UE5】

UE5

最近、というほど最近でも無いが、UEを使うようになってからC++を使うことが増えた。 元々C++は実務で使っていたのだが、最近その機会が全くと言っていいほど無かった。 UEを使うようになって久しぶりに触ってるが、やはりC++は良い。 まず見た目がかっこい…

BPのノードの戻り値に”LIVECODING”という接頭辞が付いちゃう件について【UE5.4】

UE5

今回、あるクラスのインスタンスの配列を返す関数をC++で実装して、それをBPで使おうとした。 すると、戻り値の型の前に”LIVECODING”という文字が付与された謎のパラメータが返ってきてしまい、配列の要素であるクラスの関数を呼び出せなかった。 調べてみる…