当前位置:   article > 正文

ue4显示变量_UE4里的全局变量,全局函数,便于工程里其他模块代码访问,以及Blueprint的访问...

ue 全局函数

[1.当输入用户名和密码为空的时候,需要判断。这时候就用到了校验用户名和密码,这个需要在jsp的前端页面写;有两种方法,一种是用submit提交。一种是用button提交。方法一

1. 单例

Unreal Engine的wiki上,Rama给了一个教程,教大家如何存储不常改变的全局数据,便于运行时从任何cpp或者Blueprint访问之。

要点如下:

1. 创建一个继承自UObject的class Single,需要标注UClass(Blueprintable, BlueprintType)。

在创建的class Single里放置一些全局变量后,需要添加UFunction,实现全局访问数据的接口函数。

2. 最重要的是,运行工程后,在Editor里需要设置工程的单例。

运行打开编辑器后,创建基于步骤1里的class Single的Blueprint, BP_MySingle;

然后修改编辑器的配置参数:Project Settings->Engine->General, 将Game Singleton Class设置为你自己的单例BP: BP_MySingle!  注意,用的是基于class Single的Blueprint, 不是class Single本身!

单例更偏向于数据的存取和访问,而且是一些很少改变的数据。 如何处理那些全局的功能函数呢?

[

2. BlueprintFunctionLibrary

创建可以在任意BP里访问的功能函数。

创建一个继承自UBlueprintFunctionLibrary的class,  在其中声明你需要的功能函数。

UFUNCTION(BlueprintPure) or UFUNCTION(BlueprintCallable)声明。同时函数请设置为static属性。

若函数带有BlueprintPure属性,则说明此函数不会修改任何游戏状态,因此无需exec链的触发(在Blueprint中体现为没有白线输入),可以在任何时刻被调用获取其结果。

.h

#pragma once

#include "SolusDataSingleton.h"

#include "SolusDataSingletonLibrary.generated.h"

UCLASS()

class USolusDataSingletonLibrary : public UBlueprintFunctionLibrary

{

GENERATED_UCLASS_BODY()

UFUNCTION(BlueprintPure, Category = "Solus Data Singleton")

static USolusDataSingleton* GetSolusData(bool& IsValid);

UFUNCTION(BlueprintCallable, Category = "VictoryBPLibrary")

static FString GetHappyMessage();

UFUNCTION(BlueprintCallable, Category = "VictoryBPLibrary")

static bool SaveStringTextToFile(FString SaveDirectory, FString FileName, FString SaveText, bool AllowOverWriting=false);

UFUNCTION(BlueprintCallable, Category = "ScreenResolution")

static void GetDisplayAdapterScreenResolutions();

};

.cpp

#include "MyThirdPersonCode.h"

#include "SolusDataSingletonLibrary.h"

USolusDataSingletonLibrary::USolusDataSingletonLibrary(const class FPostConstructInitializeProperties& PCIP)

: Super(PCIP)

{

}

USolusDataSingleton* USolusDataSingletonLibrary::GetSolusData(bool& IsValid)

{

IsValid = false;

USolusDataSingleton* DataInstance = Cast(GEngine->GameSingleton);

if (!DataInstance)

{

return NULL;

}

if (!DataInstance->IsValidLowLevel())

{

return NULL;

}

IsValid = true;

return DataInstance;

}

FString USolusDataSingletonLibrary::GetHappyMessage()

{

return FString("Victory! Give me a big Smile. Victory BP Works!");

}

bool USolusDataSingletonLibrary::SaveStringTextToFile(FString SaveDirectory, FString FileName, FString SaveText, bool AllowOverWriting/* =false */)

{

IPlatformFile& F = FPlatformFileManager::Get().GetPlatformFile();

if (!F.DirectoryExists(*SaveDirectory))

{

F.CreateDirectoryTree(*SaveDirectory);

if (!F.DirectoryExists(*SaveDirectory))

{

return false;

}

}

SaveDirectory += "\\";

SaveDirectory += FileName;

if (!AllowOverWriting)

{

if (!F.FileExists(*SaveDirectory))

{

return false;

}

}

return FFileHelper::SaveStringToFile(SaveText, *SaveDirectory);

}

DEFINE_LOG_CATEGORY_STATIC(MyLog, All, All)

void USolusDataSingletonLibrary::GetDisplayAdapterScreenResolutions()

{

FScreenResolutionArray Resolutions;

if (RHIGetAvailableResolutions(Resolutions, false))

{

for (const FScreenResolutionRHI& EachResolution : Resolutions)

{

FString disInfo = FString("X=") + FString::FromInt(EachResolution.Width) + FString(" Y=") + FString::FromInt(EachResolution.Height);

GEngine->AddOnScreenDebugMessage(-1, 5.0, FColor::Blue, disInfo);

UE_LOG(MyLog, Warning, TEXT("DefaultAdapter - %4d x %4d @ %d"), EachResolution.Width, EachResolution.Height, EachResolution.RefreshRate);

}

}

else

{

GEngine->AddOnScreenDebugMessage(-1, 5.0, FColor::Blue, "Screen Resolutions could not be obtained");

UE_LOG(MyLog, Error, TEXT("Screen Resolutions could not be obtained"));

}

}

[先按条件查询数据,再点下一页保留住查询条件,解决方案是将查询参数放入到store.baseParam中 storeMain.on('beforeload', function(thiz, options){     Ext.apply(thiz.b

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/133328
推荐阅读
相关标签
  

闽ICP备14008679号