|
|
@@ -1,6 +1,4 @@
|
|
|
-# 引擎开发记录
|
|
|
-
|
|
|
-## CustomChunk
|
|
|
+# CustomChunk
|
|
|
|
|
|
在计算机编程中,`Thunk` 是一个特殊的函数,其主要目的是延迟计算或调用,将一个多参数函数转换为一个单参数的延迟执行版本
|
|
|
|
|
|
@@ -123,49 +121,4 @@ DEFINE_FUNCTION(UJsonBlueprintFunctionLibrary::execGetField)
|
|
|
|
|
|
- `P_FINISH`: 宏之前为获取函数参数的代码块
|
|
|
- `P_NATIVE_BEGIN` 和 `P_NATIVE_END` : 宏包裹着真正执行该函数功能的被调用函数,若是泛型蓝图节点,此处调用该函数的泛型版本(泛型函数)
|
|
|
-- `RESULT_PARAM`: 表示函数返回值
|
|
|
-
|
|
|
-## 异步节点
|
|
|
-
|
|
|
-自定义蓝图异步节点,最简单的方式是继承 `UBlueprintAsyncActionBase`
|
|
|
-
|
|
|
-使用 `UFUNCTION` 定义一个 `BlueprintCallable` 的 `static` 函数作为入口函数
|
|
|
-
|
|
|
-使用 `DELETAGE` 定义回调事件,作为出口节点,事件的参数就是节点的返回值
|
|
|
-
|
|
|
-```cpp
|
|
|
-DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnRequestGPUInfoSuccess, int, Level);
|
|
|
-DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnRequestGPUInfoFail, int, Level);
|
|
|
-
|
|
|
-UCLASS(meta = (HideThen = true))
|
|
|
-class GPUINFO_API UGetGpuInfo : public UBlueprintAsyncActionBase
|
|
|
-{
|
|
|
- GENERATED_BODY()
|
|
|
-
|
|
|
-public:
|
|
|
- UPROPERTY(BlueprintAssignable)
|
|
|
- FOnRequestGPUInfoSuccess OnSuccess;
|
|
|
-
|
|
|
- UPROPERTY(BlueprintAssignable)
|
|
|
- FOnRequestGPUInfoFail OnFail;
|
|
|
-
|
|
|
- UFUNCTION(BlueprintCallable, meta=( BlueprintInternalUseOnly="true", WorldContext = "InWOrldContext", DisplayName = "AsyncGetGpuInfo"))
|
|
|
- static UGetGpuInfo* CreateAsyncNode(UObject* InWorldContext, const FString& URL);
|
|
|
-}
|
|
|
-```
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-> `UCLASS(meta = (HideThen = true))` 隐藏了默认的 `Then` 引脚
|
|
|
-
|
|
|
-```cpp
|
|
|
-UGetGpuInfo* UGetGpuInfo::CreateAsyncNode(UObject* InWorldContext, const FString& URL)
|
|
|
-{
|
|
|
- UGetGpuInfo* DownloadTask = NewObject<UGetGpuInfo>();
|
|
|
- DownloadTask->Start(URL);
|
|
|
- return DownloadTask;
|
|
|
-}
|
|
|
-```
|
|
|
-
|
|
|
-直接在 `static` 入口函数中创建对象,然后执行对应启动函数即可,在合适的时候 `Broadcast` 对应的事件即可
|
|
|
-
|
|
|
+- `RESULT_PARAM`: 表示函数返回值
|