#memo

indiedev太郎

C++

BPノードが取り除かれるDevelopmentModeについて

BPノードは、DevelopmentModeかどうかに応じてパッケージ時にノードを取り除く(コンパイルしない)機能がある このDevelopmentModeというの、ビルド設定の、Development、Shippingを見ているのかと思ったらなんか違うっぽく、実際にパッケージングして確認し…

UnrealC++のデリゲート、イベントについて

UE4のデリゲート関連、なんかいろいろあって混乱しているのでまとめる 元ネタのC#、UEC++、BPエディタでの使用について確認していく

UObjectのコンストラクタのバリエーション

UObjectのコンストラクタの話、宣言に3つのバリエーションが有る ClassName() のデフォルトコンストラクタ ClassName(const class FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer) の形をとるもの 何も宣言しない(GENERATED_BODY()のみ)…

IWYUでコーディングしよう

IWYUとは 4.15で追加された一つの要素として、C++コンパイルの高速化が上げられている アンリアル 4.15 がリリースされました! これは、UEのソースコード全体がIWYU(Include-What-You-Use)という方法で再構築された事によるもので、 従来、Engine.h等、同モ…

仮想関数まわり、NativeEvent関数のオーバーライドについて

miyahuji111.hatenablog.com NativeEvent、ImplementableEventについては上記を参考通常のvirtual付き関数と、NativeEvent指定した関数の継承時の振る舞いについてまとめる

Superクラスについて

BeginPlay()関数の中に見かけがちなSuperクラスについて、標準のC++ではなく、UObject継承のクラスに提供されている何かっぽい

UENUM()マクロの使用

UENUM(BlueprintType) enum class EHoge : uint8 { None, Foo UMETA(DisplayName="Bar"), Huga }; C++11のscoped enumerationつかう なので値を代入する時は型名修飾が必要 EHoge hoge = EHoge::Huga; Enums For Both C++ and BP - Epic Wiki

オブジェクトマーカーの実装

正式名称謎だけど、こういうやつとりあえず基本的な機能は 画面内に収まっているマーカーは、3DWidgetを描画 画面外のものは、画面端に方向を示すWidgetを描画 メインのマーカーWidget作る マーカー用アクタに3DWidgetで適当にやる 画面外の判定 次に、画面…

UE4、#IF DEBUGもどきマクロの作り方

色々やっているとShippingバージョンではやってほしくないノードとかが出てくる、C++の#IF DEBUGはDEBUGバージョンだけ指定コードをコンパイルしてくれる機能で、これと似たようなマクロがあったら便利 今回できるものは本家と違ってBPから除外するわけでは…

UE4、KillZVolumeの挙動について

KillZVolumeは、触れたアクタの持つFellOutOfWorld()という関数を実行するように言う(これだけの実装) FellOutOfWorld()はAActorに実装があり Physicsを切る ActorHiddenInGameをtrueに ActorEnableCollisionをfalseに Destroy()実行 という処理を行うFell…

UE4、BPでのデストラクタ処理の作り方

アクタ(AActor継承クラス)がDestroyされたときの流れ Destroy()呼ばれる Destroy()の中でDestroyed()呼ばれる Destroyed()の中でReceiveDestroyed()呼ばれる Destroyed()の中でOnDestroyed()呼ばれる BPではReceiveDestroyedとOnDestroyedを使用する、これら…

セーブについて

UE4にはセーブとロード用の関数が用意されているセーブデータ自体はSaveGameクラスを拡張して定義する、このクラスに作成した変数がファイルに書き込まれる SaveGameクラス自体はUObjectを継承しているだけで全く実装はなく、セーブ系の関数を使う時にこのク…

UE4.13、C++側で構造体を定義してBPで使う

USTRUCT(BlueprintType) struct FGameItem { GENERATED_USTRUCT_BODY() UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Item") FName key; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Item") int32 num; // Constructer FGameItem…

4.13のレンダーターゲットへのブループリント描画

4.13の新機能、テクスチャのUV座標を取得と、レンダーターゲットへのブループリント描画を触っておくUnreal Engine 4.13 Released! テクスチャのUV座標取得 関数FindCollisionUVがそれ、実装はGameplayStatic.cppにある エンジン設定でbSupportUVFromHitResu…

UE4.13で追加されたPhysical Animationsについて

4.13で追加されたPhysical Animations Unreal Engine 4.13 Released!従来でも物理アニメーションはPhATを設定して、このボーン以下にどんくらい適応するみたいな事はできた 追加された機能の違いと使い方を確認する現時点でまだドキュメントはなく、公式によ…

NavMesh周りやる

NavMesh絶対しんどい、即死 箇条書き、即死 AAIController AAIController::MoveTo FAIMoveRequest型のMoveRequestを渡す 引数が正常か、もうゴールに到達してるかをチェックして、移動できるようであれば 1. FPathFindingQuery型のQueryを用意する 2. AAICon…

CharacterMovement続き

次はNavMeshだ…

CharacterMovement周りを読む

214301428行あるけど絶対に読む

フレームワークについて

マルチプレイの実装みてて、今あらためてフレームワークの役割をちゃんと見ておく必要ある、これはかなり初期にやっておくべきだった感ある まず適当にゲーム起動して、WorldOutlinerで何があるかみる、ViewOptionsからサーバーに何がありクライアントになに…

Configurationファイル何処に何があってどれをどうしているのか問題

Unreal Engine | コンフィギュレーション ファイルConfigurationファイル、各地に散らばっており、何がどうなっているのかさっぱりわからない

ドラッグ中もマウスの位置取得する

Mouse position not updated while dragging - UE4 AnswerHubUE4、ボタンをクリック中は用意されてる関数じゃマウスの位置が帰ってこない、具体的に実装したいのは、ウインドウのドラッグ移動フォーラムではマウスポインタアクターを用意してそこから取れと…

バージョン取得する

.h UFUNCTION(BlueprintCallable, BlueprintPure, Category = "Project") static void GetProjectVersion(FString& Version); .cpp void UBlueprintFunctionLibraryCpp1::GetProjectVersion(FString& Version) { GConfig->GetString( TEXT("/Script/EngineSe…

UE4でキーコンフィグの実装

前回キーマッピング操作系関数をBPに公開したので、ついでにキーコンフィグも作っていく miyahuji111.hatenablog.comここで作った関数に追加で、現在どのキーが割り当てられているのか取得する関数が必要.h UFUNCTION(BlueprintCallable, BlueprintPure, Cat…

Viveの利き手問題

現実の手について考えると、同じ作りなので、利き手による機能差の実装とかはいらなく、これは道具側に全処理を書けば良い話 ただ、ゲーム性としてこの道具と手の関係が省略されて、コントローラー固有の実装が乗ってくる可能性があるこうなると、利き手変更…