大世界游戏系统开发
- AI(Artificial Intelligence)系统
- 行为树
- Blackboard 黑板
- 自定义 Task 节点
- Goal-Oriented
- 行为树
- GAS(Game Ability System)技能系统
- GameEffect
- 动画蓝图
- AnimGraph:状态机(常驻状态可以是用混合动画实现的行为走,其他为 Cannot Move)-> 蒙太奇的指定插槽 -> 输出姿势
- 事件图表:更新 AnimGraph,主要是更新状态机需要读的变量
- Montage 动画蒙太奇,技能打点 notify
- Inventory System 背包系统
- 背包
- 装备
- 道具槽
UE4 技能系统组成
- 技能:RPGGameplayAbility,技能包括了“选敌+效果”
- 选敌:RPGTargetType,可自由定义如“沿给定线的多球体检测”,
- 效果:GamePlayEffect
UE4 AI开发流程
新建 BlackBoard -> 新建行为树,根节点挂 Blackboard -> 为行为树新增和挂接节点
新建 AIController 子类 -> 将 AIController 挂在角色的 Pawn 上 -> AIController 初始运行行为树
到这里,可以查看逻辑有没有跑通,逻辑跑通之后,可以解决角色动画切换的问题,流程如下,
在主动画蓝图中新增动画切换状态机 -> 为角色新建一个混合动画蓝图,作为状态机的新增状态 -> 设置不同的速度对应不同的动画表现
如何修改蓝图的基类
两种办法:
- 第一种:进入蓝图编辑界面 -> 点击上方工具栏的“类设置”
- 第二种:进入蓝图编辑界面 -> 文件 -> 重设蓝图父项
UE4 技能开发流程
新建 AnimNotify -> 新建动作蒙太奇 -> 使用 Notify 打点 -> 蒙太奇加入到动画蓝图
Send Gameplay Event to Actor(Actor, EventTag, Payload)
UE4 RPG 如何绑定 Character 和 Controller?
UE4 RPG 示例中找不到 GetSlottedItems 函数
函数有对应的类,比如 GetSlottedItems 函数在以 RPGPlayerControllerBase 为基类的蓝图中
UE4 RPG 如何添加 item slot?
- 直接在 RPGCharacterBase及其子类的蓝图数据面板中设置
- 通过 RPGPlayerController 里的 SetSlottedItems 函数动态设置
通知事件在哪里定义?
事件分发器
如何增加 RPG Item Type 的种类
可以通过下述流程添加:Project Settings(项目设置) -> Game(游戏) -> Asset Manager(资产管理器) -> Primany Asset Types To Scan(要扫描的主资产类型)
如何导入插件和模块
比如对于 GAS(Game Ability System)技能系统,除了在插件管理中启用 GameplayAbilities 插件,还需要手动做以下两步:
1.在项目对应的 uproject 文件中加入对应的 moudles,如下所示,
{
"FileVersion": 3,
"EngineAssociation": "4.25",
"Category": "",
"Description": "",
"Modules": [
{
"Name": "ActionRPG",
"Type": "Runtime",
"LoadingPhase": "Default"
},
{
"Name": "ActionRPGLoadingScreen",
"Type": "ClientOnly",
"LoadingPhase": "PreLoadingScreen"
}
],
"Plugins": [
{
"Name": "GameplayAbilities",
"Enabled": true
}
]
}
如何看网上教程时发现蓝图中没有对应的类或函数,就去找到缺失的模块,加入到该文件中。
2.添加模块文件
如何调整摄像机?
找到 CameraBoom,常用的有调整初始镜头位置、目标臂长度、探头大小(作用是调整摄像机碰撞体大小,小一点比较好)
如何为非静态网格体编辑碰撞?
在碰撞相关的 Component 里编辑,比如胶囊体就是 CapsuleComponent 里可以编辑形状
如何加脚步特效?
通过 Anim 时间轴事件 -> 触发自定义的 FootstepAnimNotify 脚本 -> 触发通过 Niagara 系统播放 Actor 上挂着的脚步特效
如何将 bsp 盒体转换成 static mesh?
右边“细节”栏中可以选择
如何批量导入植物?
在内容浏览器中全选后直接拖到植物类型面板中。
如何导入在项目中粘贴 uasset?
- 项目没有打开的时候,直接将.uasset文件复制到项目Content目录下,打开工程就可以看到了。
- 项目打开的情况下导入的话,重启之。
以上导入的都应该是本地文件夹,不是直接拖入到Editor中。
变量如何分组
直接在 细节->类别 上编辑