摘要:
应用场景 当游戏运行过程中,当一个MainActor某个行为的发生会对其他多个object产生影响时可以采用观察者模式,这样可以避免MainActor与其他object发生强耦合关系。如果不采用观察者模式,可能的做法是将object加入到MainActor的行为方法中,如果有多个object那么该方 阅读全文
摘要:
不使用对象池 如果不使用对象池,那么假设一个Boss技能发射10个投射物,那么就会导致每次技能的释放需要创建10个投射物,然后遇到条件进行销毁 对象池模式 维护一个存储投射物的容器,然后在发射时从容器中取出,当"销毁时"放回容器中。 实现方式 以发射投射物为例, 首先对于投射物创建一个父类,该父类表 阅读全文
摘要:
说明 该层序遍历数组中空节点会使用-1代替,即该层序遍历数组可以理解为一个完全二叉树 代码 利用队列实现左右子节点的存储,每次通过获取队列头部元素即为当前头节点,然后在数组中i和i+1对应该头结点下的左右子节点,如果不为-1,那么说明可以入队。 struct TreeNode { int val; 阅读全文
摘要:
主要实现 主要是两点 一个是Dash的实现效果,一种是直接Dash到目的地,第二种则是在Dash过程中实现动画的播放显示 第二点则是障碍物的检测,对Dash的一个阻挡效果的实现 Dash实现效果 为了实现Dash过程中的动画显示,可以利用时间轴组件实现Location的移动,从而避免直接对角色的Lo 阅读全文
摘要:
本质 不管是客户端还是服务器在输入文字后,按下回车发送,将触发RPC调用。然后通过RPC将发送者,输入文本等信息,传入到服务器,然后通过多播RPC传播到所有客户端的聊天框。 UI UI利用三个组件 ScrollBox 用于在服务器以及每个客户端上显示消息的载体 TextBlock 本地将信息通过一个 阅读全文
摘要:
多客户端出现时间不同步的情况,, 由于每个客户端本地的时间,时区不同或者存在网络延迟造成的。所以为了能够使每个客户端显示的时间相同,就需要在Server上利用GetWorld()->GetTimeSeconds()获取服务器时间,然后传给客户端显示。 在传输过程中,要考虑到每个客户端的延迟需要做一些 阅读全文
摘要:
参考 参考 原理就是利用一个房间的三个方向(排除进入口)出口(可以减少,即设置墙壁),从而获得下一次房间生成的位置,其中涉及到对于多个房间重叠,生成结束后如何对缺口进行修补等功能实现 RoomBaseActor 该Actor类是后续创建房间的基类,如果想要固定所有房间形状即只改变出口个数,那么在该类 阅读全文
摘要:
原理:利用Token限制同一时间AI的攻击 即为Character设置一个属性Token,来限制Character同时最多可以被多少个AI攻击,当AI执行Attack攻击时,将对该Token进行修改(竞争?),如果Token不满足消耗那么将不会攻击 处理Token函数 消耗Token 当AI进行攻击 阅读全文
摘要:
NavLinkProxy PointLink: 点对点,不提供可处理的事件 SmartLink:提供可处理的事件,当AI到达Link位置时,可以接受函数 通过Receive Smart Link Reached事件进行绑定函数操作 实现简单的跳跃 通过接口,定义函数,在AI基类中进行实现。 主要通过 阅读全文
摘要:
重写ActorsPerceptionUpdated函数 有委托OnPerceptionUpdated,可以自己编写函数然后进行绑定。也可以直接对ActorsPerceptionUpdated进行重写,该函数会在有感官变化时进行调用 其会根据委托获得一个数组,即AI感知到的所有发生变化的Actor。通 阅读全文