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

UE AController

  1. 定义和功能
    AController是一种特定于游戏的控制器,在UE框架中用于定义玩家和AI的控制逻辑。AController负责处理玩家输入,并根据这些输入驱动游戏中的角色或其他实体的行为。
  2. 设计理念
    AController设计用于分离控制逻辑与游戏角色,增强游戏设计的灵活性。通过这种方式,可以灵活地为游戏对象添加或修改控制逻辑,而不影响游戏对象的基本设计。
  3. 相关类关系
    AController是AActor的子类,允许它在游戏世界中作为一个实体存在。它可以控制APawn类的对象,后者是具体的游戏角色实现。
  4. 游戏场景例子
    在一个FPS游戏中,APlayerController可以处理键盘和鼠标输入,控制一个APawn实例进行移动和射击。游戏中的AI敌人则可能由AIController控制,这些控制器使用复杂的逻辑来模拟战术行为。

在这里插入图片描述

(1)Controller和Pawn必须1:1吗?

  • 在Unreal Engine中,默认情况下,每个Controller控制一个Pawn,形成1:1的关系。
  • 开发者可以通过在Controller中实现额外的逻辑来管理多个Pawn,但这需要自定义扩展,因为引擎默认并不支持多对多关系。

(2)Controller可以显示吗?

  • 从技术上讲,Controller是可以显示的。
  • 虽然Controller通常被视为逻辑控制单位,不直接涉及游戏的图形表现,但由于Controller本质上是从AActor继承而来的,开发者可以为其添加Mesh组件或其他可视组件。
  • 然而,在实践中,Controller通常被设计为隐藏状态(bHidden = true),因为它们主要用于处理游戏逻辑而不是视觉表现。

(3)Controller的位置有什么意义?

  • Controller的位置对于控制Pawn的空间方位非常重要。虽然Controller主要是逻辑单位,但它拥有位置信息可以帮助更精确地控制Pawn,如同步位置和方向。
  • 例如,PlayerController可能需要知道自己在游戏世界中的位置以控制摄像机视角。
  • 此外,某些游戏设计可能需要Controller在特定位置生成Pawn或对环境进行查询,这些都依赖于Controller的空间位置信息。

(4)哪些逻辑应该写在Controller中?

  • 应该在Controller中编写与游戏控制流程、决策逻辑、玩家输入响应等相关的逻辑。例如,如何响应用户的键盘或鼠标输入,控制角色移动和交互,以及如何执行战略决策等。
  • 如果某些功能或行为跨多个Pawn或需要在Pawn之间共享和复用,将其放在Controller中可以增加代码的重用性和灵活性。
  • 此外,任何需要在Pawn被销毁和重新生成时保留的状态也应该存放在Controller中,因为Controller的生命周期通常长于单个Pawn。

(5)哪些数据应该放在PlayerState中?

  • PlayerState主要用于存储与玩家的持续状态有关的数据,如玩家得分、游戏统计信息和玩家在当前关卡或游戏会话中的进度。这些数据需要在玩家断开连接或游戏状态改变时持久化。
  • 对于跨关卡或游戏会话持久的数据,比如玩家的整体游戏成就或设置,应当存储在GameInstance或使用SaveGame机制进行保存,因为PlayerState在玩家离开当前游戏关卡时可能会被重置或销毁。

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

相关文章:

  • 白嫖DeepSeek:一分钟完成本地部署AI
  • Leetcode刷题-不定长滑动窗口
  • 在Putty创建php文件
  • 全程Kali linux---CTFshow misc入门(14-24)
  • 不背单词快捷键(不背单词键盘快捷键)
  • LeetCode热题100中 17. 20. 53. 78. 215.
  • Go语言的栈空间管理
  • 使用 Confluent Cloud 的 Elasticsearch Connector 部署 Elastic Agent
  • 全面解析文件包含漏洞:原理、危害与防护
  • 力扣动态规划-14【算法学习day.108】
  • 电子电气架构 --- 车载电子和软件架构概述
  • 完美世界C++游戏开发面试题及参考答案
  • 服务器虚拟化技术详解与实战:架构、部署与优化
  • go gin配置air
  • Time Constant | RC、RL 和 RLC 电路中的时间常数
  • JavaScript系列(49)--游戏引擎实现详解
  • 128周二复盘(164)学习任天堂
  • MIMIC-IV数据部署1:数据的准备(博主因手头上还有15+个SCI项目,龟速更新)
  • Linux线程安全
  • unity实现回旋镖函数
  • 【面试】【详解】计算机网络(TCP 三次握手,四次挥手)
  • Windows 程序设计7:文件的创建、打开与关闭
  • Vue.js组件开发-实现导出PDF文件可自定义添加水印及水印样式方向
  • 10.1 DriveInfo类获取磁盘分区信息
  • 011-mac自带vnc
  • leetcode——二叉树的最大深度(java)