UnrealC++を使う時の要注意ポイント



## １, UE4でVisualStudioのブレイクポイントを使用するための下準備
UE4.natvisを手動でインストールする必要があります。
「[UE4 に Visual Studio を設定する方法](https://docs.unrealengine.com/latest/JPN/Programming/Development/VisualStudioSetup/index.html)」 の「UE4 Visualizer for Visual Studio 2013 をインストールする」を参考にしてください。

**「UE4のバージョン更新毎に手動でバージョンアップが必要です。」**
**「手動アップデート、インストールしないとUnrealC++でブレイクポイントが使えなくなります」**

## ２, UE4を再起動せずにブレイクポイントを使ってデバッグする
１、VisualStudio上でAttach to Procesを選択して…
![AttachToProssess.jpg](https://qiita-image-store.s3.amazonaws.com/0/32364/9853a738-4738-e5bf-32db-2cb100f44281.jpeg)
２、出てきたウィンドウ内でUE4Editorを選択します。
尚,Processのどれかを選択した後キーボードの「U」を押すと素早く見つけられます。
![windowSelect.jpg](https://qiita-image-store.s3.amazonaws.com/0/32364/08c21f7d-d954-8485-ea89-674ed8aaaede.jpeg)
３、ちゃんとアタッチできるとVC++の画面のフチの色が変わり、何か分析してるっぽい動きをします。
その状態でUE4エディタ画面上でPlayボタンを押すと、ブレイクポイント付きのデバッグが行えます。

※ビルドの際にホットリロードがうまくいかなかった場合等はブレイクポイントが強制的に無効化されてしまいます。
「3,デバッグ中にブレイクポイントの挙動がおかしくなったら」の手順を試してみてください。

※Attach to Procesをツールバーに登録しておくと素早く使えて便利です。
是非やってみませう。
![ショートカット.jpg](https://qiita-image-store.s3.amazonaws.com/0/32364/d4ca3d3f-627f-4226-edd8-0dbdfca1de24.jpeg)
![ショートカット登録.jpg](https://qiita-image-store.s3.amazonaws.com/0/32364/36f43c01-6330-dfab-5938-1d23e9f6ae2f.jpeg)
## ３,デバッグ中にブレイクポイントの挙動がおかしくなったら
１、UE4を落とす。
２、Development Editorでリビルド
３、UE4を起動しなおす。
※起動時、一番最初に読み込まれるバイナリは「Development Editor」でのビルド結果になっているようです。
Debug Game Editorのバイナリがビルド済みだったとしても読み込まれません。
一回でもビルドしなおしてホットリロードした場合はビルドしたバイナリが読み込まれます。
## ４,BPへ公開する関数の宣言方法(出力ピンの作り方)
**参照渡しにすると出力ピンになります。**
**クラスの場合はクラスのポインタを参照渡しすると、出力ピンになります。**

```C++:
UFUNCTION(BlueprintCallable, Category = "MyHoming")
void USample::OutTest(float &outMass, class UPrimitiveComponent *& outRight)
```

この宣言方法で出力ピンになります。
クラスはポインタを参照渡しという変則的な方法ですが、クラスを出力できます。

## ５,チェックアウト直後など、パスが変わった場合の儀式
**「忘れた場合UnrealC++由来のオブジェクトの設定が全て吹っ飛ぶ可能性があります。」**
コミットやら保存やらで大崩壊を起こすとシャレになりません。

１、**UE4起動前に**　"＊＊＊.uproject"ファイルを**右クリック**して
「Generate Visual Studio project files」します。
![Ganerate VisualStudioProjectFile.jpg](https://qiita-image-store.s3.amazonaws.com/0/32364/1662016c-e478-b1a1-2edf-ec76d71db19b.jpeg)

２、UE4を起動したら必ずC++のビルドを行える事を**必ず一番最初に**確認してください。

※UE4は設定内のそこかしこにフルパス
(UE4インストールのフルパス、プロジェクトのフルパス等)を仕込まれており、
環境が変わるとフルパス指定が通らなくなってビルドできなくなります。
この為「Generate Visual Studio project files」で修理します。

※BPのコンパイルを行った時にUnrealC++のバイナリがなかった場合、
設定されているUnrealC++由来のオブジェクトが全て無名オブジェクト(Object)で置き換えられてしまう場合が有ります。

## ６、C++のファイルを所定のフォルダへ追加する。
通常コードはフォルダ分けして管理しますが
UE4Editor上ではC++Classesフォルダ下へフォルダを追加できません。
でも迂回してフォルダを追加する方法が有ります。

１、C++ Classes下のフォルダを右クリックし、Show in Explorerを開きます。
![ShowInExploler.jpg](https://qiita-image-store.s3.amazonaws.com/0/32364/5c13a802-19f0-814b-14c6-afae1a8b3b8d.jpeg)
２、Explorerが開いたら、Explorer上でフォルダを追加します。

![explorer.jpg](https://qiita-image-store.s3.amazonaws.com/0/32364/423869cc-ede4-e571-d1a3-ebd3ebc3d454.jpeg)
３、Explorer上で作ったフォルダへC++のファイルを追加します。
![ccreate.jpg](https://qiita-image-store.s3.amazonaws.com/0/32364/5444c66d-2ecd-8ba0-a9bc-be5ed35d9bf0.jpeg)
尚、フォルダを作っただけではフォルダの存在はUE4Editorで認識されず、
フォルダ内にビルド済みのクラスの定義等が入った時点でUE4Editorで見えるようになります。

## ７、C++ファイルを削除する。
間違えて作ったファイルは意外と削除し難いです。
削除する場合はここのページに従って消してください。
[Alweiさんの解説ページ](http://unrealengine.hatenablog.com/entry/2016/06/13/213000)

## ８、ＢＰでは簡単にできるこのノード、C++版を調べたいっ！！
ＢＰでは割と色々な事が出来て、簡単に色んなノードが出てきます。
しかしＣ＋＋で同じことをしようとすると非常に時間がかかるケースが有ると思います。
その場合はＢＰで見つけたノードからＣ＋＋版を探すようにしましょう。

１、調べたいノードを出す。
２、調べたいノードを右クリック、「Goto Code Definition」をクリックします。
![BpToC++.jpg](https://qiita-image-store.s3.amazonaws.com/0/32364/efe9264b-72ba-a7f6-a28f-dd767d7d02f4.jpeg)
３、開いたVisualStudioでノード名を文字列検索します。
すると下記みたいな感じで見つかります。
![GetActorLocation.jpg](https://qiita-image-store.s3.amazonaws.com/0/32364/94f82945-ac13-01fa-32d0-81504ba4b60f.jpeg)
※UE4を日本語版にしていると方法は出来ないかもしれません。

## ９、UE4、VisualStudioは日本語版？英語版？
基本は両方英語推奨です。
英語が苦手な場合は両方日本語です。
UE4は英語の資料の方が圧倒的に豊富で探しやすいです。
UE4が英語版であればノード名を検索すれば大抵何かしらの資料が出てきます。
日本語版だとノード名が日本語になってしまい当然英語の資料は見つかりません。

※UE4は英語で使うのにVisualStudioを日本語でインストールしてしまった場合は
VisualStudioを英語でインストールしなおしましょう。
９項目目でも書きましたがUE4英語版、VisualStudio日本語版、
で組み合わせた場合は文字化けが発生して面倒なことになります。

※VisualStudioのインストールには数時間かかります。
最初から英語でインストールするようにしましょう。

※はVisualStudioが日本語版、UE4も日本語版の
組み合わせで文字化けが起こるかチェックできていません。

## １０、UE4英語版、VisualStudio日本語版、による文字化け
UE4英語版、VisualStudio日本語版の場合、下記画面でエラーメッセージの文字化けを起こします。

![CompilerLog.jpg](https://qiita-image-store.s3.amazonaws.com/0/32364/ea99ca96-f740-57bb-20b1-aa05d1d87580.jpeg)
※はVisualStudioが日本語版、UE4も日本語版の
組み合わせで文字化けが起こるかチェックできていません。
基本的にUE4、VisualStudioは英語版推奨です。