UE4最高だぜえぇ!とか言ってたら、
見事にフラグ回収して、
独り言で罵声を浴びせることになりました。
ロムすけです。
罵声を浴びせてしまった原因が、
タイトルにもある、
「.generated.hがエディタモジュールから開けない問題」
これですわ。
結果的には自分の知識不足なんですけどね。
すいませんでしたUE4。
最近やっとできた、
エディタ側でのデバッグ描画なんですが、
そもそもビルドが通らなくてだいぶネットの海をさまよっていたのです。
デバッグ描画にどんだけかかってるんだ!?
俺はゲームが作りたいんじゃ!!と涙を流す日々でした。
もし同じように困ってる人がいたら、
そんな悲しみからはすぐに逃れて、
ゲームを作っていただきたい。
ということで、
デバッグ描画記事の前にこれを書き残しておきます。
頑張るゲーム開発者に幸あれ・・・
------------------------------------------------------------
前提として問題にぶちあたる流れ
実行時ではなく、エディタでデバッグ描画したい。
↓
せっかくならモジュール分けてデバッグ機能をエディタモジュールに実装したい
↓
ゲームモジュールにアクターコンポーネントを実装。
↓
エディタモジュールにビジュアライザを実装してデバッグ描画!
↓
よっしゃ!ビルド!!
MyActorComponent.generated.hが開けません。
って永遠に言われる。
ネットで検索すると、.uprojectで再度generated Visual Studio project filesすれば?
と出まくるが、それではない。それで解決するのはたいてい、
なんかファイルを追加したりなんだりしたときにやってない人のための文章だ。
そんなことでは解決しなかったのだよ;;
解決策
MyGameEditor.Build.cs
こいつの理解が甘いせいでした。
エディタ用のビルド設定MyGameEditor.Build.csに、
PublicDependencyModuleNames.AddRange(new string{"MyGame"});
↑これが必要だった。
他に必要なモジュールは読み込んでたけど、
自分のゲームモジュールを追記しないといけないとは・・・盲点だった。
そら違うモジュールなんだから、
エディタモジュールからゲームモジュールのヘッダが開けない。ような理屈と思っている。
しかも、generated.hはUE4が生成してるものだしな。
自分のゲームモジュールも追加しないといけなかったっぽい。
追加で問題が起きた
上記問題解決後ビルドをすると、
generated.h開けないエラーは解消したが、
エンジン系の関数や変数でリンクエラーでまくった。
これは上記問題解決のおかげでお察し。
はい、これも同じ問題。
MyGameEditor.Build.cs内に、
PrivateDependencyModuleNames.AddRange(new string{"UnrealEd"});
↑これが必要だった。
エンジン系のモジュールで、デバッグ描画まわりで使いたいものがほぼコレに入ってるっぽい。
公式wikiにチョロ書きあり。なるほどだ。
ちなみに。
ver4.21で実装しており上記問題でPublicIncludePaths
とか怪しいなーとか思ったら、
現在は不要になってた。
PublicIncludePaths (List<String>)
(「Public」フォルダからすべてのファイルを検索できるので、この設定は現在必要ありません)
※EpicGames公式サイト引用
とのことだ。
------------------------------------------------------------
ビルド通ったし、
書いた処理は全部あってて動いたよ。。
エンジン理解が深まった(常識か)ところで、
さてゲーム作ろう。