当前位置: 首页 > news >正文

UE4学习笔记 FPS游戏制作16 重构FppShooter和RoboteShooter 提出父类Shooter

文章目录

    • 设置父类
    • 迁移属性和方法
    • 解除Gun类对FppShooter的引用
    • 将FppShooter里的Gun相关的方法提升到Shooter里

作为玩家控制的角色和AI控制的角色,两个类都是角色,有一定的共性,给他找一个共同的父物体

设置父类

新建一个蓝图类,Shooter,继承自Character
分别打开FppShooter和RoboteShooter,进入蓝图,选择文件/重设蓝图父项,重新指定父类为Shooter
在这里插入图片描述

迁移属性和方法

将RoboterShooter里的TakeDamage,IsDead方法和Health变量移动到Shooter里,需修改Bullet和Rifle里的受伤方法,原来是转换为RoboterShooter,现在是转换为Shooter
在这里插入图片描述
迁移后需要注意的点:
1 Health记得赋值
2 TakeDamge这里的线需要重新连
在这里插入图片描述

可以右键RoboterShooter资产,选择“引用查看器”来查看引用了哪些资源和被哪些资源引用
被左侧资产被引用,引用了右侧资产
在这里插入图片描述

解除Gun类对FppShooter的引用

旧代码中,由于Gun需要获得持有者的信息,使用GunOwner变量储存了FppShooter,现在我要把FppShooter变为Shooter
在这里插入图片描述
这将造成一些错误
先编译蓝图,使修改生效
右键GunOwner,选择查找引用
在这里插入图片描述
然后点击望远镜来查看所有的引用
在这里插入图片描述
依次查看所有变量引用是否正确
最大的问题来自Rifle的ShootOnce方法,在获取射线的出发位置时,由于Shooter中没有Camera组件,这里一定不会正确,且旧有逻辑中只有玩家可以开枪,现在要玩家和NPC都要开枪,玩家从相机开枪,NPC从自己的中间开枪,所以这里还需要提出一个方法
Shooter里添加一个GetShootLocation方法,不需要实现
在这里插入图片描述
FppShooter里重写
在这里插入图片描述
RoboterShooter里重写
在这里插入图片描述

将FppShooter里的Gun相关的方法提升到Shooter里

迁移这些数据,然后开始编译蓝图,哪里出错改哪里
不要先着急删除FppShooter的就方法,因为他们可以提示你原来做了什么,方便替换成新的
在这里插入图片描述

相关文章:

  • HTML应用指南:利用POST请求获取城市肯德基门店位置信息
  • 【八股文】http怎么建立连接的
  • 破解云端依赖!如何通过Flowise搭建私有化的端到端AI开发环境
  • [250324] Kafka 4.0.0 版本发布:告别 ZooKeeper,拥抱 KRaft!| Wine 10.4 发布!
  • 上海瀛旻信息科技有限公司
  • 总结 Spring 中存储 Bean 的相关注解以及这些注解的用法.
  • python+requests接口自动化测试
  • git使用钩子文件出现错误
  • 《深入剖析 SmartInt 包装类:实现智能整数操作》
  • Netty源码—5.Pipeline和Handler二
  • 31天Python入门——第9天:再学函数
  • 推荐1款简洁、小巧的实用收音机软件,支持手机和电脑
  • 量子计算与人工智能的融合:下一代算力革命
  • 【CGE】社会核算矩阵构建(一):SAM基本结构
  • 【零基础入门unity游戏开发——2D篇】2D物理系统 —— 2D刚体组件(Rigidbody 2d)
  • 计算机网络的分类——按地理范围分类
  • uniapp运行到支付宝开发者工具
  • 使用Kafka 3.2.3内置的Zookeeper
  • 导游职业资格考试复习时间规划,合理安排高效备考
  • 江西南昌棒球城市·棒球1号位
  • 李铁案二审驳回上诉,维持一审有期徒刑20年的判决
  • 金砖国家外长会晤发表主席声明,强调南方国家合作
  • 今年一季度全国城镇新增就业308万人,就业形势保持总体稳定
  • 专访|首夺天元头衔创生涯历史,王星昊打算一步一步慢慢来
  • 阿里千问3系列发布并开源:称成本大幅下降,性能超越DeepSeek-R1
  • 古籍新书·2025年春季|中国土司制度史料集成