UE4通過類名符串和函數名字符串調用函數


	UPROPERTY()
	FACTION_DATA CurActionData;
	UPROPERTY(EditAnywhere, BlueprintReadWrite, DisplayName = "播放完成回調類(不要A,U前綴如Actor非AActor)")
	FString ClassName;
	UPROPERTY(EditAnywhere, BlueprintReadWrite, DisplayName = "播放完成回調函數")
	FName CallBackUFunction;
FACTION_DATA CurActionData;
	UPROPERTY(EditAnywhere, BlueprintReadWrite, DisplayName = "播放完成回調類(不要A,U前綴如Actor非AActor)")
	FString ClassName;
	UPROPERTY(EditAnywhere, BlueprintReadWrite, DisplayName = "播放完成回調函數")
	FName CallBackUFunction;

if (!ClassName.IsEmpty())
	{
		UObject* ClassPackage = ANY_PACKAGE;

		UClass* Result = FindObject<UClass>(ClassPackage, *ClassName);
		//動畫結束回調
		if (Result && (!CallBackUFunction.IsNone()))
		{
			UFunction*CallBack = Result->FindFunctionByName(CallBackUFunction);
			if (CallBack)
			{
				ProcessEvent(CallBack, NULL);
			}
		}
	}

 

備註:回調類(不要A,U前綴如Actor非AActor),CallBackUFunction爲Class中的UFUNCTION()函數

如類

UCLASS()
class TEST_API AZombieMonster :public:APawn
{
	GENERATED_BODY()
public:
	UFUNCTION()
	void OnAnimEnd();
}

 

傳入值 ClassName=FString("ZombieMonster"),不帶前綴A AZombieMonster

傳入值 CallBackUFunction=FName("OnAnimEnd");

最終會調用AZombieMonster::OnAnimEnd()函數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章