前言
- 使用版本UE 4.26 VS2019
- C++函数库可以让开发者用C++编程更多的功能函数然后再蓝图中调用,非常有用!👍
一、新建C++类
打开一个C++项目。
点击 文件----新建C++类 或者在 内容浏览器 内右键—新建C++类
然后选择蓝图函数库
这样才能 选择公共
然后你的.h文件就会在public中创建
创建之后就会得到一个.h文件和一个.cpp文件
.h文件:
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "MyBlueprintFunctionLibrary1.generated.h"
/**
*
*/
UCLASS()
class LLO_API UMyBlueprintFunctionLibrary1 : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
};
.cpp文件
// Fill out your copyright notice in the Description page of Project Settings.
#include "MyBlueprintFunctionLibrary1.h"
二、新建函数
1. 声明
在UE4中,有中宏:UPROPERTY
和UFUNCTION
UPROPERTY
是当你需要将一个UObject类的子类的成员变量注册到蓝图中时用的
UFUNCTION
通常用于注册函数到蓝图中
这里以查找文件夹文件为例:
UFUNCTION(BlueprintCallable, Category = "UMyBlueprintFunctionLibrary")
static void ScanDirectory(int& A, TArray<FString>& Files, const FString& FilePath, const FString& Extension);
先通过UFUNCTION
声明,第一个参数意思为蓝图可调用,第二个参数为你自己蓝图函数库的名字前面加个"U" 我这里为MyBlueprintFunctionLibrary
要注意函数库中声明的函数只能为静态的函数,一定要声明static
函数声明中的参数在蓝图中显示为引脚。
输入引脚为 const + 类型 + & +变量名
输出引脚为类型 + & + 变量名
2.实现
在.h文件中声明好函数后,在.cpp文件里面进行实现就行了
// Fill out your copyright notice in the Description page of Project Settings.
#include "MyBlueprintFunctionLibrary.h"
void UMyBlueprintFunctionLibrary::ScanDirectory(int& num, TArray<FString>& Files, const FString& FilePath, const FString& Extension)
{
FString SearchedFiles = FilePath + Extension;
TArray<FString> FindedFiles;
IFileManager::Get().FindFiles(FindedFiles, *SearchedFiles, true, false);
FString SearchFile = "";
num = FindedFiles.Num();
for (int i = 0; i < FindedFiles.Num(); i++)
{
SearchFile = FilePath + FindedFiles[i];
Files.Add(SearchFile);
}
}
3.编译
实现之后需要进行编译,可以在vs里面生成或者在UE上进行编译