本日はちょっと変わったWarningエラーについて調べました。
WarningエラーってCompile通っちゃうので見逃してしまうこともありますが、
積もり積もるとPackage作成に時間が掛かったり、Compileに時間がかかるのでできれば無い方が望ましいです。というか無くすべきです。Warningエラーが出るケースとして、大体コンパイラやミドルウェアのお作法に従っていない場合が多いので、環境に合わせたコードを組む必要があります。
本日扱うのはCreateExportエラーについてです。↓
まず、エディタ起動してPersistentLevelが開いた直後に大量に出ていました。
黒字で隠している箇所には、エラー対象のBlueprint名と関数名が記載されています。
まず日本語訳的には「(関数名)が親クラスの情報としてありません」と言った感じ。
なるほど、わからん。
というわけで、例のごとくエンジンのソースを追っていくと・・・
「子クラスで使用しているoverride関数が親クラスに無いこと」が要因でした。
オブジェクト指向プログラムを書いたことがある人はこう思うでしょう。
「こいつ、何を言っているんだ?」
通常、親クラスで定義したクラスは、子クラスでoverrideして同名の関数を使用することができます。
例えば、BP_Parent(親クラス)の継承クラスであるBP_Childがあった場合、
親クラスで定義した関数(FunctionA)は、
子クラスでもoverrideして使用できます。
その場合、関数名に矢印がついてます。
UnarealEngine独自として関数をCustomEventとしてEventGraphに作成することもできます。
以下ではCustomEventとして「FunctionB」を作成しています。
CustomEventも同様に子クラスでoverrideでき、FunctionBをoverrideする場合は「Event FunctionB」と入力することで使用することができます。
では最初に戻って今回のCreateExportエラーについてですが、
このCustomEventをoverride定義した関数がエラー対象となっていました。
確かにFunctionsのoverride対象から外れているけど・・・
今回のエラーを確認したバージョンはv4.4.2でしたが、
最近リリースのv4.7.0では発生しませんでした。
バージョンアップの間に修正されたようです。
このようなエラー修正が行われていたりするので、進行中のプロジェクトがある場合は随時バージョンアップするのが望ましいですね。
というわけで、本日は地味ーなエラーのお話。