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

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的就方法,因为他们可以提示你原来做了什么,方便替换成新的
在这里插入图片描述


http://www.kler.cn/a/599308.html

相关文章:

  • 蓝桥杯刷题 Day 4 栈与链表
  • NLP高频面试题(十四)——DPO、PPO等强化学习训练方法介绍
  • BKA-CNN-LSTM、CNN-LSTM、LSTM、CNN四模型多变量时序光伏功率预测,附模型研究报告
  • 鸿蒙NEXT开发案例:程序员计算器
  • Docker 镜像构建与优化
  • 上海瀛旻信息科技有限公司
  • Git 裸仓库:局域网仓库共享
  • 练习:统计满足条件的数字
  • Fiddle快速入门(抓包工具)
  • Spring Boot 项目打包运行
  • Apache Dubbo Pixiu打造微服务生态的轻量级 API 网关
  • 蓝桥杯算法实战分享:算法进阶之路与实战技巧
  • Linux操作系统7- 线程同步与互斥6(POSIX信号量与环形队列生产者消费者模型)
  • 个人学习编程(3-24) 数据结构
  • 【CSS3】完整修仙功法
  • Java中抽象类和接口
  • 【零基础入门unity游戏开发——2D篇】2D物理系统 —— 2D刚体组件(Rigidbody 2d)
  • 稳健投资新标杆,云济会布局国库券回购助推金融市场优化
  • 解锁DeepSeek潜能:Docker+Ollama打造本地大模型部署新范式
  • Spring MVC请求与响应全解析:从参数绑定到异常处理