UE4 新手常用C++API
来源:互联网 发布:淘宝网游戏道具 编辑:程序博客网 时间:2024/05/17 09:35
蓝图调用变量
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "XXX")
蓝图调用函数
UFUNCTION(BlueprintCallable, Category = "XXX")
运行命令
GetWorld()->GetFirstPlayerController()->ConsoleCommand("quit");
打印
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Yellow, FString::Printf(TEXT("%s"),*FString));
#include "Misc/OutputDevice.h"
GLog->Logf(TEXT("%s"), *Filepath);
设置位置
SetActorLocation(FVector(0.0f, 0.0f, 250.0f));
继承父类
Super::Xxx();
MD5加密
FMD5::HashAnsiString(TEXT("someStuff"));
传一个Object蓝图
UPROPERTY(BlueprintReadWrite,EditAnywhere,Category = "XX")
TSubclassOf<class SkillHelperObject>SkillBlueprintHelperObject;
路径
结构体
USTRUCT(Blueprintable)
struct FAskWayDate
{
GENERATED_USTRUCT_BODY()
public:
UPROPERTY(BlueprintReadWrite,EditAnywhere,Category = "XX")
int OpCode;
UPROPERTY(BlueprintReadWrite,EditAnywhere,Category = "XX")
TMap<int, FString> Parameters;
};
FString Str2 = FString::Printf(TEXT("Texture2D'/Game/pan/Frame_%05d.Frame_%05d'"),textName)
查找场景中的Actor
AActor * AMyActor::FindActor(FString Actorname)
{
AActor* mActor = NULL;
if (GetWorld())
{
for (TActorIterator<AActor> It(GetWorld()); It; ++It)
{
AActor* xActor = *It;
if (xActor->GetName() == Actorname)
{
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, TEXT("Get it"));
mActor = xActor;
break;
}
}
if (!mActor)
{
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, TEXT("No Get it"));
}
return mActor;
}
else
{
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, TEXT("NO getworld"));
return nullptr;
}
}
绑定按键(PS:需要在Pawn或Character里)
void AMyActor::SetupPlayerInputComponent(class UInputComponent* InputComponent)
{
InputComponent->BindKey(EKeys::Z, IE_Released, this, &AMyActor::OpenURL);
InputComponent->BindAction("Grow", IE_Released, this, &AMyActor::OpenURL);
InputComponent->BindAxis("back", this, &AMyActor::OpenURL);
}
返回多个值,引用
void AMyActor::MoreReturn(FString& A, bool& B)
{
}
蓝图显示中文枚举类(VS文件-高级保存选项UTF-8格式)
enum class EenumChinese :uint8
{
E_EN UMETA(DisplayName = "英文"),
E_CH UMETA(DisplayName = "中文"),
};
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "enumChinese")
EenumChinese enumChinese;
双选项枚举类
UENUM(BlueprintType)
enum class EMyEnum : uint8
{
BranchA,
BranchB,
};
UFUNCTION(BlueprintCallable, Category = "My|MyActor", Meta = (ExpandEnumAsExecs = "Branches"))
void BranchFun(int32 Input, EMyEnum& Branches);
void AMyActor::BranchFun(int32 Input, EMyEnum& Branches)
{
if (Input == 1)
{
Branches = EMyEnum::BranchA;
}
else
{
Branches = EMyEnum::BranchB;
}
}
创建UI "Media", "MediaAssets"
if (nullptr == MainMenuWidget)
{
UClass* aa = LoadClass<UUserWidget>( NULL, TEXT( "Blueprint'/Game/UMG/MainMenu.MainMenu_C'" ) );
MainMenuWidget = CreateWidget<UUserWidget>( GetWorld()->GetFirstPlayerController(), aa );
}
MainMenuWidget->AddToViewport();
//http://blog.csdn.net/zilisen/article/details/77645500
找蓝图Actor
static ConstructorHelpers::FObjectFinder<UBlueprint> assetObject(TEXT("/Game/Maps/test.test_C"));
if (assetObject.Succeeded())
{
TestBlueprint = (UClass*)assetObject.Object->GeneratedClass;
}
找材质
static ConstructorHelpers::FObjectFinder<UMaterial> MaterialAsset(TEXT("/Game/Maps/MAT.MAT"));
if (MaterialAsset.Succeeded())
{
Material = (UMaterial*)MaterialAsset.Object;
}
LOG
UE_LOG(LogTemp, Warning, TEXT("Cannot find xx"));
DEFINE_LOG_CATEGORY(LogMySlate);
UE_LOG(LogMySlate, Warning, TEXT("Found UObject named"));
生成类
TestObjectActor = GWorld->SpawnActor<AActor >(TestBlueprint);
UWorld* const World = GetWorld();
AActor* GridCube = World->SpawnActor<AActor>(GridCubeClass2, FVector(0.0f, 90.0f, 50.0f), FRotator(0.0f, 0.0f, 0.0f));
创建Object
UMyObject*NewObj=NewObject<UMyObject>();
读取Texture2D
UTexture2D* texture22 = Cast<UTexture2D>(StaticLoadObject(UTexture2D::StaticClass(), NULL, *(Path)));
获得名字
Actor->GetName() == TEXT("FloatActor_1")
强制转换
PTGameInstance = Cast<UPTGameInstance>(World->GetGameInstance());
添加组件
RootComponent = CreateDefaultSubobject<USceneComponent>(TEXT("Center"));
设置碰撞类型
SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics);
重力
SetEnableGravity(false);
计时器
FTimerHandle CountdownTimerHandle;
GetWorldTimerManager().SetTimer(CountdownTimerHandle, this, &AMytestActor::AdvanceTimer, 1.0f, true);
GWorld->GetTimerManager().UnPauseTimer(mTimer); //唤醒
float elapsed = GWorld->GetTimerManager().GetTimerElapsed(mTimer); //已逝时间
float elapsed = GWorld->GetTimerManager().GetTimerRemaining(mTimer); //剩余时间
bool isActive = GWorld->GetTimerManager().IsTimerActive(mTimer); //激活
bool isPaused = GWorld->GetTimerManager().IsTimerPaused(mTimer); //暂停
bool isExist = GWorld->GetTimerManager().TimerExists(mTimer); //存在
GetWorldTimerManager().ClearTimer(CountdownTimerHandle);//停止计时器
退出游戏
UKismetSystemLibrary::QuitGame(this, nullptr, EQuitPreference::Quit);
获取时间
FDateTime::Now().ToString();
链接URL
FString TheURL = "xxxxxxxx";
FPlatformProcess::LaunchURL(*TheURL, nullptr, nullptr);
获取IP地址
需要在build.cs添加Sockets模块
#include "SocketSubsystem.h"
#include "IPAddress.h"
FString IpAddr("NONE");
bool canBind = false;
TSharedRef<FInternetAddr> LocalIp = ISocketSubsystem::Get(PLATFORM_SOCKETSUBSYSTEM)->GetLocalHostAddr(*GLog, canBind);
if (LocalIp->IsValid())
{
IpAddr = LocalIp->ToString(false); //(如果想附加端口就写 ture)
}
return IpAddr;
添加标签
MyActor.Tags.AddUnique(TEXT("MyTag"));
销毁物体
MyActor->Destroy();
MyActor->SetLifeSpan(1);//延迟1S
截图
FString UMyBlueprintFunctionLibrary::TakeScreenShoot(FString picName, bool bUnique /*= true*/)
{
FString inStr;
FString Filename;
FScreenshotRequest::RequestScreenshot(picName + ".png", false, bUnique);
FString ResultStr = FScreenshotRequest::GetFilename();
ResultStr = FPaths::GetBaseFilename(ResultStr, true);
return ResultStr + ".png";
}
写入配置文件,有GEditorIni,GEditorProjectIni,GCompatIni,GlightmassIni,GScalabilityIni,GHardwareIni,GInputIni,GGameIni,GGameUserSettingsIni等(查找CoreGlobals.h)
写的数据会写到 YourGame\Saved\Config\Windows\Game.ini 中
const FString WriteSection = "MyCustomSection";
//String
GConfig->SetString(
*WriteSection,
TEXT("key1"),
TEXT("Hello world"),
GGameIni
);
GConfig->Flush(false, GGameIni);
读取配置
if (!GConfig) return 0;
float ValueReceived ;
ValueReceived = GConfig->GetFloat(
TEXT("MyCustomSection"),
TEXT("key1"),
ValueReceived,
GGameIni
);
return ValueReceived;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "XXX")
蓝图调用函数
UFUNCTION(BlueprintCallable, Category = "XXX")
运行命令
GetWorld()->GetFirstPlayerController()->ConsoleCommand("quit");
打印
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Yellow, FString::Printf(TEXT("%s"),*FString));
#include "Misc/OutputDevice.h"
GLog->Logf(TEXT("%s"), *Filepath);
设置位置
SetActorLocation(FVector(0.0f, 0.0f, 250.0f));
继承父类
Super::Xxx();
MD5加密
FMD5::HashAnsiString(TEXT("someStuff"));
传一个Object蓝图
UPROPERTY(BlueprintReadWrite,EditAnywhere,Category = "XX")
TSubclassOf<class SkillHelperObject>SkillBlueprintHelperObject;
路径
结构体
USTRUCT(Blueprintable)
struct FAskWayDate
{
GENERATED_USTRUCT_BODY()
public:
UPROPERTY(BlueprintReadWrite,EditAnywhere,Category = "XX")
int OpCode;
UPROPERTY(BlueprintReadWrite,EditAnywhere,Category = "XX")
TMap<int, FString> Parameters;
};
FString Str2 = FString::Printf(TEXT("Texture2D'/Game/pan/Frame_%05d.Frame_%05d'"),textName)
查找场景中的Actor
AActor * AMyActor::FindActor(FString Actorname)
{
AActor* mActor = NULL;
if (GetWorld())
{
for (TActorIterator<AActor> It(GetWorld()); It; ++It)
{
AActor* xActor = *It;
if (xActor->GetName() == Actorname)
{
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, TEXT("Get it"));
mActor = xActor;
break;
}
}
if (!mActor)
{
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, TEXT("No Get it"));
}
return mActor;
}
else
{
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, TEXT("NO getworld"));
return nullptr;
}
}
绑定按键(PS:需要在Pawn或Character里)
void AMyActor::SetupPlayerInputComponent(class UInputComponent* InputComponent)
{
InputComponent->BindKey(EKeys::Z, IE_Released, this, &AMyActor::OpenURL);
InputComponent->BindAction("Grow", IE_Released, this, &AMyActor::OpenURL);
InputComponent->BindAxis("back", this, &AMyActor::OpenURL);
}
返回多个值,引用
void AMyActor::MoreReturn(FString& A, bool& B)
{
}
蓝图显示中文枚举类(VS文件-高级保存选项UTF-8格式)
enum class EenumChinese :uint8
{
E_EN UMETA(DisplayName = "英文"),
E_CH UMETA(DisplayName = "中文"),
};
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "enumChinese")
EenumChinese enumChinese;
双选项枚举类
UENUM(BlueprintType)
enum class EMyEnum : uint8
{
BranchA,
BranchB,
};
UFUNCTION(BlueprintCallable, Category = "My|MyActor", Meta = (ExpandEnumAsExecs = "Branches"))
void BranchFun(int32 Input, EMyEnum& Branches);
void AMyActor::BranchFun(int32 Input, EMyEnum& Branches)
{
if (Input == 1)
{
Branches = EMyEnum::BranchA;
}
else
{
Branches = EMyEnum::BranchB;
}
}
创建UI "Media", "MediaAssets"
if (nullptr == MainMenuWidget)
{
UClass* aa = LoadClass<UUserWidget>( NULL, TEXT( "Blueprint'/Game/UMG/MainMenu.MainMenu_C'" ) );
MainMenuWidget = CreateWidget<UUserWidget>( GetWorld()->GetFirstPlayerController(), aa );
}
MainMenuWidget->AddToViewport();
//http://blog.csdn.net/zilisen/article/details/77645500
找蓝图Actor
static ConstructorHelpers::FObjectFinder<UBlueprint> assetObject(TEXT("/Game/Maps/test.test_C"));
if (assetObject.Succeeded())
{
TestBlueprint = (UClass*)assetObject.Object->GeneratedClass;
}
找材质
static ConstructorHelpers::FObjectFinder<UMaterial> MaterialAsset(TEXT("/Game/Maps/MAT.MAT"));
if (MaterialAsset.Succeeded())
{
Material = (UMaterial*)MaterialAsset.Object;
}
LOG
UE_LOG(LogTemp, Warning, TEXT("Cannot find xx"));
DEFINE_LOG_CATEGORY(LogMySlate);
UE_LOG(LogMySlate, Warning, TEXT("Found UObject named"));
生成类
TestObjectActor = GWorld->SpawnActor<AActor >(TestBlueprint);
UWorld* const World = GetWorld();
AActor* GridCube = World->SpawnActor<AActor>(GridCubeClass2, FVector(0.0f, 90.0f, 50.0f), FRotator(0.0f, 0.0f, 0.0f));
创建Object
UMyObject*NewObj=NewObject<UMyObject>();
读取Texture2D
UTexture2D* texture22 = Cast<UTexture2D>(StaticLoadObject(UTexture2D::StaticClass(), NULL, *(Path)));
获得名字
Actor->GetName() == TEXT("FloatActor_1")
强制转换
PTGameInstance = Cast<UPTGameInstance>(World->GetGameInstance());
添加组件
RootComponent = CreateDefaultSubobject<USceneComponent>(TEXT("Center"));
设置碰撞类型
SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics);
重力
SetEnableGravity(false);
计时器
FTimerHandle CountdownTimerHandle;
GetWorldTimerManager().SetTimer(CountdownTimerHandle, this, &AMytestActor::AdvanceTimer, 1.0f, true);
GWorld->GetTimerManager().UnPauseTimer(mTimer); //唤醒
float elapsed = GWorld->GetTimerManager().GetTimerElapsed(mTimer); //已逝时间
float elapsed = GWorld->GetTimerManager().GetTimerRemaining(mTimer); //剩余时间
bool isActive = GWorld->GetTimerManager().IsTimerActive(mTimer); //激活
bool isPaused = GWorld->GetTimerManager().IsTimerPaused(mTimer); //暂停
bool isExist = GWorld->GetTimerManager().TimerExists(mTimer); //存在
GetWorldTimerManager().ClearTimer(CountdownTimerHandle);//停止计时器
退出游戏
UKismetSystemLibrary::QuitGame(this, nullptr, EQuitPreference::Quit);
获取时间
FDateTime::Now().ToString();
链接URL
FString TheURL = "xxxxxxxx";
FPlatformProcess::LaunchURL(*TheURL, nullptr, nullptr);
获取IP地址
需要在build.cs添加Sockets模块
#include "SocketSubsystem.h"
#include "IPAddress.h"
FString IpAddr("NONE");
bool canBind = false;
TSharedRef<FInternetAddr> LocalIp = ISocketSubsystem::Get(PLATFORM_SOCKETSUBSYSTEM)->GetLocalHostAddr(*GLog, canBind);
if (LocalIp->IsValid())
{
IpAddr = LocalIp->ToString(false); //(如果想附加端口就写 ture)
}
return IpAddr;
添加标签
MyActor.Tags.AddUnique(TEXT("MyTag"));
销毁物体
MyActor->Destroy();
MyActor->SetLifeSpan(1);//延迟1S
截图
FString UMyBlueprintFunctionLibrary::TakeScreenShoot(FString picName, bool bUnique /*= true*/)
{
FString inStr;
FString Filename;
FScreenshotRequest::RequestScreenshot(picName + ".png", false, bUnique);
FString ResultStr = FScreenshotRequest::GetFilename();
ResultStr = FPaths::GetBaseFilename(ResultStr, true);
return ResultStr + ".png";
}
写入配置文件,有GEditorIni,GEditorProjectIni,GCompatIni,GlightmassIni,GScalabilityIni,GHardwareIni,GInputIni,GGameIni,GGameUserSettingsIni等(查找CoreGlobals.h)
写的数据会写到 YourGame\Saved\Config\Windows\Game.ini 中
const FString WriteSection = "MyCustomSection";
//String
GConfig->SetString(
*WriteSection,
TEXT("key1"),
TEXT("Hello world"),
GGameIni
);
GConfig->Flush(false, GGameIni);
读取配置
if (!GConfig) return 0;
float ValueReceived ;
ValueReceived = GConfig->GetFloat(
TEXT("MyCustomSection"),
TEXT("key1"),
ValueReceived,
GGameIni
);
return ValueReceived;
9 0
- UE4 新手常用C++API
- [UE4]Component相关常用API
- UE4新手引导入门教程
- C语言 常用API
- C++chan常用API
- UE4新手之编程指南
- UE4 Metal Rendering API
- UE4 API查找
- UE4蓝图 API
- mysql-C-API常用函数
- c/c++ 常用api 官网
- C/C++常用时间API
- ue4材质常用节点
- UE4新手编程之创建C++项目
- UE4新手命令教程 (后续更新)
- 【UE4/C++】切换镜头
- C\C++文件读取常用函数及新手易犯错误
- MySQL之常用C API详述
- ACM必练50题
- 一场娱乐节目引发的脑补
- 云安全之OpenStack 高可用和灾备方案 [OpenStack HA and DR]
- 【ProgrammingMicrosoftAzureServiceFabric】第二章: 无状态服务
- 一次传销(一)
- UE4 新手常用C++API
- Vue.js 计算属性
- qt之定时器 和随机数
- 中共中央组织部关于调整省以下国土资源主管部门干部管理体制的通知-组通字(2004)22号
- bzoj 2154 Crash的数字表格
- React Native 弹出框
- SAPUI5页面跳转方法
- phoenix适配cdh5.5.2安装
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)