今日は別の切り口から攻めてみようと思い、普通にエディターを使ってC++のソースを追加する手順を試してみた。
追加したcppファイルからデバッグモードでステップ実行ができるので、そこからパッケージされたプログラムの中身が多少のぞけるのではないかと。
で、結局、デバッグ実行まで進めなかった、わはは。
どうも、VisualStudioとUE4エディタ間の連携に問題があるらしく、cppのソースコードが問題なくビルドできるのはエディタを立ち上げた初回だけなのだ。
それ以降ソースコードを編集してリビルドするとビルドに失敗するのである。
エディターが生成したDLLファイルの参照をエディタが掴んだままでいるらしく、VisualStudioがそのDLLにリンクしようとして競合エラーが起きているらしい。
対処方法としては、いったんエディターを閉じてから、VisualStudioでビルドするとうまく行った。
めんどくさ。
こういうことに小1、2時間とられ時間切れ、というわけだ。
ただ、ブループリントとC++の連携の仕組みの概要はつかめた。
ブループリントに配置する駒として、ゲームの状態やユーザーの入力を受け取るノードと、ファンクションを呼び出すノードがある。
たとえば、
絵の上部は、エスケープキーの入力を受け取るノードと、ゲームを終了させるファンクションを呼び出すノードをつないでいるところだ。
これによって、コードを書かなくても、エスケープキーを押せばゲームを終了する、という機能を実現できるわけだ。
じゃあ、これとcppのソースコードとどういう関係があるかというと、絵の下の部分になる。
これは、Xキーの入力を受け取るノードと、キャラクターを巨大化させるファンクションを呼び出すノードをつないでいるところだ。
しかし、このキャラクターを巨大化させるファンクションは、ゲームを終了するファンクションのようにはじめから組み込まれているわけではない。
そこで、ある作法に従ってcppのソースコードにメソッドを追加することで、自作のファンクションノードが使えるようになる、という仕組みになっている。
ウィンドウズアプリとしてパッケージングしたサンプルの動画を貼り付けておく。真ん中あたりで巨大化するところがみられる。