[UE4入门笔记(2)] 4.关于委托的一些思考 5.菜单布局实现 6.开发UI时,之前出现的各文件的作用(个人理解) --梁迪老师UE4纯C++&Slate开发沙盒游戏

前言:

笔者目前在校本科大三,目标方向是人工智能、计算机视觉。上一个OpenCV学习笔记专栏已完结,在学习完OpenCV后,我继续学习C++,并用纯C++做UE4项目的方式继续提升自己的水平。

梁迪老师的水平非常高,他的课程本来也无需笔记:课程本身即为最好的笔记。但由于我天赋有限,还是边看边记,以防遗忘——知识点太多,步骤太繁杂了。在学习过程中,我也偶有思考,思索为什么某个方法老师要这样做。所以,一是为了记录,二是为了分享,才有了这个专栏。

内容方面,由于我在开启这个专栏时,此项目已经做完很多了。所以,前期的一些大篇幅叙述的知识,可能在后期应用中一带而过。以及,前期的一些知识,后期会重新剖析,并加上我的个人理解。

另外,若有学术交流/学业交流意愿,可以邮件联系1246210283@qq.com,希望一齐进步。


本篇学习内容:

4.关于委托的一些思考
5.菜单布局实现
6.开发UI时,之前出现的各文件的作用(个人理解)


4.关于委托的一些思考

c++没有委托,但是可以实现委托。
通过

#define DECLARE_DELEGATE_RetVal( ReturnValueType, DelegateName ) 	FUNC_DECLARE_DELEGATE( DelegateName, ReturnValueType )

DECLARE_DELEGATE_RetVal( 
		FReply, 
		FOnClicked )

有:参数类型:FOnClicked 返回类型:FReply
随后在SButton中有事件:

SLATE_EVENT( FOnClicked, OnClicked )

所以就可以在事件中 绑定Onclicked函数到 xxx函数上 同时传入该Button
如:

	SNew(SButton)
	.OnClicked(this,&SSlAiMenuHUDWidget::Onclick) //点击这个按钮时,执行绑定的Onclick函数

该xxx函数的返回值是FReply 和委托对应

在本专栏3.修改slot中的实际价值就是,绑定Onclick函数到SButton上,再用该函数通过ImageSlot控制上面的Slot

5.菜单布局实现

在SSlAiMenuHUDWidget.h中创建一个菜单指针

TSharedPtr<class SSlAiMenuWidget> MenuWidget;

在SSlAiMenuHUDWidget.cpp中

	SOverlay::Slot()
	.HAlign(HAlign_Center)
	.VAlign(VAlign_Center)
	[
		SAssignNew(MenuWidget,SSlAiMenuWidget)
	]

这是创建Slate Widget的第二种方法

随后在SSlAiMenuWidget中实现菜单布局,代码基本与之前SSlAiMenuHUDWidget的类似。

6.开发UI时,之前出现的各文件的作用(个人理解)

在文件中创建了MenuWidget、MenuHUDWidget、MenuWidgetStyle、Style

MenuHUDWidget统筹整个布局,属于底层。

MenuWidget用于实现菜单布局,被包含于MenuHUDWidget的Childslot下。

MenuWidgetStyle中可以创建各种笔刷,来添加到Childslot中;同时,MenuWidget和MenuHUDWidget需要创建MenuWidgetStyle实例
const struct FSlAiMenuStyle *MenuStyle;
然后在cpp文件中获取编译器的MenuStyle

MenuStyle = &SlAiStyle::Get().GetWidgetStyle<FSlAiMenuStyle>("BPSlAiMenuStyle");

获取编译器的MenuStyle由Style文件来完成

Style准备了多种函数,包括初始化、得到类型名、关闭、得到Slate类型等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值