2017-11-14 4 views
0

Unreal Engineで(4.15)のプロジェクトプラグインを作成する際に少し問題があります。だからそれを分解しましょう。 UActor成分由来し、また、このラインを持っている 1.I've作成MyClassのは:プラグインのUActorComponent派生クラスが関数呼び出しのために反応しません

UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 

2.I'veは私のゲームモードにそのコンポーネントを追加しました。 3.私はクラス内からGameModeを取得してからMyGameModeにキャストし、MyClassComponentを取得することで、関数を呼び出そうとしています。 4.関数を呼び出すときに何も起こりません。

私はそれをデバッグしようとしていましたが、関数本体に入ることはありませんが、関数の前に出力し、後は完全にうまく動作します。私は、関数を直接プロジェクトにコンパイルすると、100%正常に機能するとも言わなければなりません!私は私に教えてくださいを認識していないんだということに必要な任意のより多くの情報がある場合

UFUNCTION(BlueprintCallable, Category = "MyClass|Test") 
     void TestFunction(); 

void UMyClass::TestFunction() 
{ 
    GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, "hello there"); 
} 

これは私が私の関数を宣言しない方法のサンプルです。

UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 
class UMyClass : public UActorComponent 
{ 
GENERATED_BODY() 
public: 
UFUNCTION(BlueprintCallable, Category = "MyClass|Test") 
void TestFunction(); 
}; 
+0

タイプミスということですか? 'GameMode'ではなく、' MyGameMode'にキャストする必要があります。 'GameMode'はあなたのコンポーネントを持っていません。あなたの' MyGameMode'はあなたのコンポーネントです。 – Rotem

+0

はい、あなたは間違いを犯しました。私はGetGameMode-> MyGameMode-> Getコンポーネントにキャストしています。 –

+0

「MyClass」を宣言する方法を示してください。 – Rotem

答えて

1

公に消費する必要がある任意のクラスは、そのシンボルが輸出されている必要がありMyClassの宣言。

UEプラグインでこれはYOURPLUGIN_API指定子で実現されます。YOURPLUGINはプラグインの名前です。

これは、エクスポート時には__declspec(dllexport)、プラグインを使用する場合は__declspec(dllimport)と定義されています。

だからあなたのクラス定義は次のようになります。「その後、私はゲームモードにキャストすることにより、クラスの中から任意の関数を呼び出すようにしようとしている」

UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 
class MYPLUGIN_API UMyClass : public UActorComponent 
{ 
    ... 
} 
関連する問題