★Unreal Engine 4メモにもならない雑記

ここから記事に進化していく・・・はず。

# TMap/TSetのデバッグ
[Debugging tmap and tsets](https://qiita.com/sy_/items/6e52f8436f8b500ca033)

# プラグイン追加時の警告
~~~
UnrealBuildTool: Warning: Plugin 'A' does not list plugin 'B' as a dependency, but module 'A' depends on 'B'
~~~
プラグイン「A」はプラグイン「B」を依存関係としてリストしていませんが、モジュール「A」は「B」に依存しています。
.upluginへの依存関係リストの追加漏れが原因。
https://answers.unrealengine.com/questions/704619/unrealbuildtool-dependancy-warning.html?sort=oldest

# UnrealFrontEndのプロファイルをコピーしたい
[[UE4] Custom Launch Profile を複製する方法](https://qiita.com/donbutsu17/items/d1b75edae5873ba424b4)

# UE4のカメラ操作のpanの反転(maya)
[編集] -> [エディタの環境設定] -> [ビューポート] -> [Invert Middle Mouse Pan]

#Unreal Header Toolはbool配列をサポートしていない？
UPROPERTYを伴って宣言するとUnreal Header Toolはエラーを吐く。

```c++:sample.cpp
UPROPERTY(BlueprintReadOnly)
bool clear[100];
```

`Bool arrays are not allowed.`というエラーが出る。

[Bool arrays in c++? - Forums](https://forums.unrealengine.com/development-discussion/c-gameplay-programming/69749-bool-arrays-in-c)

# 同じ名前のオブジェクト作ったら強制終了するお話
[[Bug] Objects have the same fully qualified name but different paths.](https://answers.unrealengine.com/questions/663483/bug-objects-have-the-same-fully-qualified-name-but.html)

#SEGAさんのTIPs
[20年オヤジのUnreal Engine 4 TIPS](http://techblog.sega.jp/entry/2018/11/26/100000)

# Optimizing Unreal Engine 4’s async file IO thread.
https://pzurita.wordpress.com/2014/06/30/optimizing-unreal-engine-4s-async-file-io-thread/
そのうち読む。読むんや。しんどそうだけど…。

# ウィジェットにドラッグした時の反応を入れたい

https://dawnarc.com/2018/11/ue4umghow-to-drag-item-to-scrollbox-using-c-/
https://github.com/absentje/UE4/blob/master/RTS_Game/Source/RTS_Game/Private/UI/Inventory/ItemDrag.cpp
https://github.com/absentje/UE4/blob/master/RTS_Game/Source/RTS_Game/Private/UI/Inventory/ItemSlotWidget.cpp
https://docs.unrealengine.com/ja/Engine/UMG/HowTo/DragAndDrop/OnDragDetected/index.html

# UE4エディタ拡張でプログレスバー

https://isaratech.com/ue4-making-a-progress-bar-in-the-editor/

# UE4の詳細ログを表示したい
-execcmd="log loginit veryvarbose"

#シェーダーコンパイルだけIncrediBuildを無効化

```ini:[プロジェクト名]/Config/DefaultEngine.ini
[SystemSettings]
r.XGEShaderCompile=0
```

# Latentノード便利そう
http://unwitherer.blogspot.com/2017/06/unrealclatent.html

---

うまく動作しない・・・

UPROPERTY(EditAnywhere, Meta=(MakeEditWidget = true))
FVector position;

#Bind Wedgetの話
http://benhumphreys.ca/unreal/ui-bindwidget/

---

#ログメッセージ
```c++:sample.cpp
GEngine->AddOnScreenDebugMessage(-1, 20.0f, FColor::Black, "msg");
```

#C++からBPへ通知
http://katze.hatenablog.jp/entry/2016/05/22/142950

#Actorを生成したい
https://answers.unrealengine.com/questions/428572/spawning-a-character-at-run-time-in-c.html

#UFunctionをオーバーライドする
https://answers.unrealengine.com/questions/1683/ufunction-overriding-non-u-function-specifiers.html

#GameModeに設定されたPlayerControllerを取得したい
https://answers.unrealengine.com/questions/87563/getting-playercontroller-object-from-gamemode.html

#TArray
ソートしたい。

```c++:sample.cpp
TArray<FData*> param;
param.Sort([](const FData& LHS, const FData& RHS)  { return LHS > RHS; });
```

#TMap

TMapをconstにするとなぜか怒られる。

```
const TMap<int32, FString> map;
```

#ランダム
FMath::FRandRange

#ActorComponentのライフサイクル
InitializeComponentがエディタでコンパイルボタンを押しても呼ばれる

#処理時間
- NewObject
メモリの確保を行う。オブジェクトがウィジェットのようにツリー構造の場合、その数だけ正比例して処理時間は長くなる。
- AddViewPort
オブジェクトの初期化を行う。スレッド登録なども行われる。NewObject同様に処理時間が長い。

#enumについて
http://papersloth.hatenablog.com/entry/2017/07/07/005225

#BPへのバインド
USTRUCTはUFUNCTIONを持てない

#分散コンパイル設定
##設定ファイル
```xml:BuildConfiguration.xml
<?xml version="1.0" encoding="utf-8" ?>
<Configuration xmlns="https://www.unrealengine.com/BuildConfiguration">
	<BuildConfiguration>
		<!-- SNDBS -->
		<bAllowSNDBS>true</bAllowSNDBS>
		<!-- Incredibuild -->
		<bAllowXGE>true</bAllowXGE>
	</BuildConfiguration>
</Configuration>
```

`*My Documents*/Unreal Engine/UnrealBuildTool/BuildConfiguration.xml`に配置するとプロジェクトの設定を上書きできて楽。

##参照
[アンリアルビルドシステムの設定](https://docs.unrealengine.com/ja/Programming/UnrealBuildSystem/Configuration/index.html)

# UObjectに関するメモ

タグ付けって何してるのか？
タグ付けの印？　内部的にUCLASSの引数なのか？

アンリアルベースの型とは？
アンリアルベースの型を記述するとはどういう意味か？

CDO は、 基本的にデフォルトの 'template' オブジェクトtemplate 維持する
"template"とは
"template"と型情報の違い？
AUTOジェネレートのテンプレートと同義なのか？

'template' オブジェクト　＝　タグ付けのタグ？　＝　auto generated されたヘッダファイル？　＝　アンリアル固有のメタデータ？

タグは誰が識別するため？　おそらくエディタ、もしくはBP＝つまりエンジンが理解する
auto generated されたファイルとタグ付けの話が一緒？

c++からBPにバインドする作業を兼ねている？
バインドとは？　＝　動的型付け言語の変数「束縛」　＝　ラムダの束縛と一緒？　＝
クロージャとバインドは一緒？　→　違う

アンリアル固有のメタデータ　って何？


ゲーム オブジェクトを処理する堅牢なシステム　＝　オブジェクト システム？

ネイティブコードでマクロを書いたらそれがタグつけしたという意味ですか？

タグ付けがアンリアル上での振る舞いを定義している？

プロトタイプベースオブジェクト指向？

タグつけしてないプロパティもある。　UPopatyなどのマクロをつけていないものの話なのか？
UCLASS 内のプロパティ　と　ネイティブのみのプロパティの関係とは何か？どう違うのか？役割？

NewObjectに指定するOuterって何？
Outerを指定する場合としない場合の違いは何か？
Outerのデフォルト引数のGetTransientPackageって何か？
Transientてどういう意味？
OuterとPackageの関係とは？
名前コンフリクトとは？

new演算子で生成されたUCLASSはガベージコレクトされるのか？

NewObject -> 変数初期化
AddViewPort　-> スレッドの登録 

マーク付け　＋　タグ付け

UPROPATYのマクロのオプションtransient

ポスト コンストラクタ
ポストイニシャライザ

アンリアルヘッダツール


ランタイムかた情報
IsA

UCLASS型のインスタンスが型情報で



smalltalk

コンカレント GC

ワールド　レベル
-----