一.UFUNCTION 格式
和屬性也比較像,兩部分 函數說明符,和元數據說明符
UFUNCTION不僅能 控制對藍圖公開,還能與 綁定委托,用戶輸入,網絡回調功能相關聯,而且還能創建自己控制帶命令
二.函數說明符控制 ,函數在引擎和編輯器各個反面的UPERPERTY屬性說明符類似,屬性控制的時變量。
BlueprintPure
?|
此函數不對擁有它的對象產生任何影響,可在藍圖或關卡藍圖圖表中執行。早默認情況下,帶有?const
?標記的函數將作為純函數公開。要將常量函數變成非純函數,你可以做以下聲明:BlueprintPure=false
1.純函數沒用引腳。const 就表示不改變里面的變量
UFUNCTION(BlueprintPure)float BlueprintPureFunction();UFUNCTION(BlueprintCallable)float BlueprintCallableFunction();UFUNCTION(BlueprintCallable)int32 BlueprintCallableConstFunction() const;UFUNCTION(BlueprintPure = fasle)int32 BlueprintPureFalseFunction() const;
在UE 的 C++ 中,?const 關鍵字用于修飾函數,表示該函數不會改變其作用域內的變量值。 添加 const 后有以下幾個意義: 常量函數:當你聲明一個函數為 const,則表明它不會修改任何外部對象的狀態,這對于安全性和提高代碼效率很有幫助,因為編譯器可以對這類函數進行優化
2.純函數沒有引腳,輸出引腳連兩次的話,哪怕是打印函數,可能會執行兩次邏輯。
3.BlueprintImplementableEvent
?
BlueprintImplementableEvent
?| 此函數可在藍圖或關卡藍圖圖表中實現。
感覺官方不夠準卻,記住一定不要再 .cpp里寫定義。它一定要在藍圖里才能定義,頭文件聲明一下就行了。
4.BlueprintNativeEvent
?
| 此函數旨在被藍圖覆蓋掉,但是也具有默認原生實現。用于聲明名稱與主函數相同的附加函數,但是末尾添加了_Implementation
,是寫入代碼的位置。如果未找到任何藍圖覆蓋,該自動生成的代碼將調用?_Implementation
?方法。
這里官方還比較明確了,藍圖覆蓋不了,再用.cpp里的原生的。
5.BlueprintAuthorityOnly
?| 如果在具有網絡權限的機器上運行(服務器、專用服務器或單人游戲),此函數將僅從藍圖代碼執行。
只在服務器上進行傷害,本地不會。