在UE4蓝图中面向对象思想的应用

光照改进

volume翻译为体积,但它其实是一个空间,里面有很多特定的功能。例如之前的Nav Mesh Bounds Volume 可以控制机器人的移动(追踪)

选择 Volumes -> Post Process Volume 拖入场景
在这里插入图片描述
添加光蕴,它只在体积内有效

在detail中查unbound ,打上对勾,使效果不受体积影响,应用到整个场景当中
在这里插入图片描述
添加光斑
在这里插入图片描述
修改光斑颜色
在这里插入图片描述
还有一个办法,增加反射
方形和球形
添加到场景中之后,进行拉伸


何时将一个概念提取为一个类?

1、有自己的行为
2、有自己的状态
游戏中的枪是可以抽象为一个类的

面向对象编程的三个特征

封装-encapsulation

数据的修改应该只和相关的成员函数绑定,而不是由外部其他类修改
1、公开能做什么,隐藏如何做。
函数实现的功能公开,函数的内部实现隐藏。
玩家调用枪,只能调用startfire和endfire,而不能调用shootfire,枪对外只公布startfire和endfire两个行为,其他不公开。
2、减少依赖。
其他类只能依赖公开的东西,隐藏的东西没有办法调用,也就没有依赖。如果公开不该公开的东西,其他类就有可能调用,当你想修改实现的时候依赖引用这个地方的东西就都需要修改,依赖就变多了。提高可维护性。

继承-inheritance

目的:复用代码
可以造成复杂的层级结构
单继承 vs 多继承
蓝图只有单继承
多继承使用很少
单继承是说一个子类只有一个父类,多继承是说一个子类有两个或多个父类

多态-polymorphism

一个接口,多种实现
目的让代码更通用

UE4中的Actor

任何能放在关卡中的对象

UE4中的组件

用来组成Actor的子对象

USceneComponent

CapsuleComponent 胶囊组件
ArrowComponent 箭头组件
Mesh 骨骼组件
Camera 摄像机组件

UActorComponent

没有3D变换数据
CharacterMovement Component 控制角色移动的组件

UE4中的Pawn和Controller

可以被控制的Actor,放在关卡里的Actor不是都可以被控制的
例如 玩家和NPC(Non-Player Character,非玩家角色)
Controller:可以持有Pawn并控制它的行为的对象
PlayController 和 AIController
PlayController是Pawn和玩家之间的接口,通过posses和unposses两个函数对Pawn进行控制和释放

UE4中的Character

可以行走的Pawn

枪抽象为一个类

父类为Actor

ChildActor组件

让一个类成为另一个类的组件,在viewport中展示出来
枪负责处理射击,FppShooter负责触发射击。枪就可以通过ChildActor这个组件挂载到FppShooter上。

减少依赖

在这里插入图片描述

换枪需要做的事情

1、保存多把枪
2、换下去的枪要隐藏,状态和数据都需要保存,而不是销毁,
3、换枪要有动作
4、不同的枪有不同的行为

保存多把枪

需要用到容器:数组、集合、Map
集合:元素不重复、无序

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值