1.C++函式給藍圖呼叫時,虛函式宣告,
UCLASS() class UbpfLibrary : public UBlueprintFunctionLibrary { GENERATED_BODY() public: …… UFUNCTION(BlueprintPure, Category = "project - vc library") static bool szmGetStatus(const TArray<int>& param1, const TArray<XXX>& dataStruct,TArray<int>& oldStatus); …… }
const 修飾的是輸入引數, 沒有const修飾是輸出引數,
BlueprintPure宣告這個函式以虛函式方式呼叫, 虛函式好處是沒有箭頭,如果輸出只有一個,省卻藍圖引線,但是,如果是多個輸出,包括上面例子,除了oldStatus輸出之外,還有一個 bool回傳值,假如藍圖中倆個都用到,函式要執行倆次,特別是函式內部有亂數影響執行時,倆次結果會不一致,
此時
2.C++函式給藍圖呼叫時,只執行一次,
UCLASS() class UbpfLibrary : public UBlueprintFunctionLibrary { GENERATED_BODY() public: …… UFUNCTION(BlueprintCallable, Category = "project - vc library") static bool szmGetStatus(const TArray<int>& param1, const TArray<XXX>& dataStruct,TArray<int>& oldStatus); …… }
BlueprintPure更改為 BlueprintCallable,,更改后類似如下圖示,多個輸出時只執行一次,

參考連接:https://docs.unrealengine.com/en-US/Engine/Blueprints/TechnicalGuide/ExtendingBlueprints/index.html
3.Texture2D傳遞給C++函式并進行修改,
如果作為輸入引數 直接 const UTexture2D* xxx
如果作為輸出引數 “UTexture2D*”作為回傳值,
但是,涉及到修改 Texture2D時, 傳遞方式如下 “const TArray<UTexture2D*>& textureArray”必須用TArray包起來才能傳值,
4.void且無引數函式,作為藍圖函式, 宣告 為“BlueprintPure”將導致編譯錯誤MSB307錯誤,

原因可能是“BlueprintPure” 類函式沒有執行路徑;如果回傳值也沒有,引數也沒有,實際在藍圖中無法呼叫,
更改為 BlueprintCallable ,增加執行路徑;或者增加輸出即可,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/9922.html
標籤:C++
上一篇:C++ 回傳物件的參考
下一篇:CPU性能分析工具原理
