ue4账号注册不了_【UE4实现登录注册功能】-开发者专栏-【游戏蛮牛】-游戏出海,ar增强现实,虚拟现实,unity3d,unity3d教程下载首选u3d,unity3d社区 - Powered ...

本文介绍了如何在UE4中创建登录和注册界面,包括使用C++和UMG创建用户界面,以及如何实现HTTP通信和JSON序列化。通过游戏模式类处理按钮事件,动态切换界面,并讲解了注册时的数据校验和服务器交互过程。
摘要由CSDN通过智能技术生成

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

9f547f370dcc586bae5ddae68dee88bc.gif

x

thread-112427-1-1.html本节主要讲解游戏的起始页,登录页,注册页的实现。主要讲解的知识点是C++如何使用UMG做界面开发和UE4如何实现HTTP通讯及JSON的序列化和反序列化。视频教程链接可到蛮牛教育观看,详情链接点击:无尽之刃·文明1、起始页开发

thread-112427-1-1.html1、创建蓝图版UserWidget

首先创建好UI目录,把UI素材导入到目录中。

thread-112427-1-1.html

创建起始页蓝图版的UserWidget,按照上述成品图设计即可。包含的元素如下:背景图片

Logo图片

开始游戏按钮

注册账号按钮

退出游戏按钮

版本信息文本

注意事项:设计UMG界面时特别需要注意锚点的使用以及布局面板的使用,起始页面使用的是

VerticalPanel对右面的Logo到版本信息进行了垂直布局。2、创建C++版UserWidget

首先我们要在Build.cs里面把UMG和Slate配置上去。

创建蓝图UserWidget的父类,让上面的蓝图继承之。因为我们要获取起始页面具体的按钮的引用来进一步对UMG的Widget进行操作。

根据上面的界面设计,我们在头文件中创建了三个UButton,分别表示开始游戏、注册游戏、退出游戏。我们希望这三个成员变量在子类蓝图UMG创建时自动初始化,因此我们重写UserWidget的Initialize()方法,在蓝图UMG初始化时自动初始化父类(UStartUserWidget)的三个按钮成员变量即可。

退出游戏按钮的事件非常的简单,因此我们这里在父类实现即可。添加OnClicked事件并实现退出游戏的逻辑。

综上,我们可以看出UMG的基本的开发思路,首先要设计好要展示的蓝图版的UMG,然后创建C++版的UserWidget,其成员变量/方法应是关于蓝图版的UMG的数据,以方便来使用蓝图版的UMG里面定义的控件。然后回到蓝图版的UMG让其父类继承之。

起始页头文件(StartUserWidget.h)/**

* 游戏开始界面

*/

UCLASS()

class INFINITYBLADE_API UStartUserWidget : public UUserWidget

{

GENERATED_BODY()

public:

/** 开始游戏按钮 */

UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category = "UI")

UButton* StartBtn;

/** 注册游戏按钮 */

UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category = "UI")

UButton* RegisterBtn;

/** 退出游戏按钮 */

UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category = "UI")

UButton* ExitBtn;

public:

/** 创建UserWidget对象后执行的生命周期方法 */

virtual bool Initialize() override;

/** 初始化控件引用 */

void Init();

/** 退出游戏按钮点击事件 */

UFUNCTION()

void ExitBtnClickedEvent();

};

起始页cpp文件(StartUserWidget.cpp)#include "StartUserWidget.h"

/** 创建UserWidget对象后执行的生命周期方法 */

bool UStartUserWidget::Initialize()

{

if (!Super::Initialize())

{

return false;

}

/** 初始化控件的引用 */

Init();

return true;

}

/** 初始化控件引用 */

void UStartUserWidget::Init()

{

/** 初始化游戏开始按钮 */

StartBtn = Cast(GetWidgetFromName(TEXT("Button_Start")));

/** 初始化游戏注册按钮 */

RegisterBtn = Cast(GetWidgetFromName(TEXT("Button_Register")));

/** 初始化游戏退出按钮 */

ExitBtn = Cast(GetWidgetFromName(TEXT("Button_Exit")));

/** 设置退出游戏按钮的点击事件 */

ExitBtn->OnClicked.AddDynamic(this, &UStartUserWidget::ExitBtnClickedEvent);

}

/** 退出游戏按钮点击事件 */

void UStartUserWidget::ExitBtnClickedEvent()

{

/** 退出游戏 */

UKismetSystemLibrary::QuitGame(GetWorld(), nullptr, EQuitPreference::Quit);

}3、事件的监听

上面我们已经把退出游戏按钮的点击事件实现了,还有开始游戏和注册账号两个按钮的事件没有实现,此时,我们考虑一下MVC的设计模式以及高内聚低耦合的模式,我们应该把那两个按钮的事件放在哪里呢?

首先肯定是不能放到自己写的C++父类里面的,如果放在里面的话,我们首先要获取开始游戏页面和注册游戏页面的控件引用,这样就不符合低耦合的概念了。所以这里考虑UE4提供的Gameplay框架,我们首先是考虑放到了GameMode这个类里面。下面是游戏首页关卡的游戏模式类,该类里面拥有我们对于UI的处理逻辑。我们看到还有两个成员变量分别是登录页面和注册页面的UI,我们现在先暂时不考虑,下面会讲解这两个页面的开发。

我们首先看一下起始页面UI的初始化、开始游戏按钮的回调事件和注册游戏按钮的回调事件。初始化UStartUserWidget对象这里采用的静态加载LoadClass()方法,我们也可以创建游戏模式的蓝图,使用TSubclassOf的方式来加载,这里技术细节不具体赘述了。初始化完成后把该UMG添加到Viewport即可。

开始游戏按钮和注册游戏按钮只需要添加OnClicked事件即可。在这两个游戏按钮的点击事件上,我们动态的切换Viewport展示的UMG即可。

至此,我们已经把游戏起始页的基本功能完成了,这里只是粗略的赘述了一下,如果想更了解细节可以看源代码来自己手动实现。

首页游戏关卡的游戏模式类的头文件:EmptyGameMode.h/**

* 初始化关卡游戏模式

*/

UCLASS()

class INFINITYBLADE_API AEmptyGameMode : public AGameMode

{

GENERATED_BODY()

public:

/** 起始页面UI */

UPROPERTY()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值