本来想写一个批量控制widget开关的接口,想写一个像append一样的可加pin的接口
【unity实用技能】记一次失败的蓝图接口开发失败经验_第1张图片

首先还是找到这个接口得代码
【unity实用技能】记一次失败的蓝图接口开发失败经验_第2张图片

可以看到关键的点就是 CommutativeAssociativeBinaryOperator = "true"
就是这个,标记这个接口是可以加pin的。
接下来就是照着写一下接口

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once
#include "CoreMinimal.h"
#include "UObject/ObjectMacros.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "Styling/SlateTypes.h"
#include "Components/Widget.h"
#include "ExtraBlueprintFunctionHelper.generated.h"

/**
 * 
 */
UCLASS()
class CLIENT_API UExtraBlueprintFunctionHelper : public UBlueprintFunctionLibrary
{
    GENERATED_BODY()

public:
    UFUNCTION(BlueprintCallable, meta = (DisplayName = "SetBatchVisiable", CommutativeAssociativeBinaryOperator = "true"), Category = "UExtraBlueprintFunctionHelper")
    static UWidget* SetBatchVisiable(UWidget* objA, UWidget* objB);

};

这里有几个要注意的地方:
1.用了CommutativeAssociativeBinaryOperator这个标记为可拓展的话,返回值类型和传的参数类型要一致
2.如果要带流程线的话,就不能用BlueprintPure,要用BlueprintCallable
3.如果用了BlueprintCallable,那么又不能加pin了。。。
就是要不是这样
【unity实用技能】记一次失败的蓝图接口开发失败经验_第3张图片
要不是这样

【unity实用技能】记一次失败的蓝图接口开发失败经验_第4张图片

所以,失败了。。。