AssetManager的使用
前言
AssetManager(下面简称AM)
是一个全局单例类,用于管理各种primary assets
和asset bundles
。
可以在运行时对Primary Assets
进行加载和释放操作
补充官方文档对于AssetManager
的介绍
虚幻引擎 4 自动处理 资源 加载与卸载,开发者无需编写系统代码告知引擎具体所需的资源。然而,某些情况下开发者可能需要更精确地掌控资源发现、加载与审核的时机与方法。在这些情况下,资源管理器(Asset Manager) 便能大显身手。资源管理器是存在于编辑器和打包游戏中的独特全局对象,可根据不同项目进行覆盖和自定义。它提供了一个管理资源的框架,可将内容划分为数据块,对应项目的上下文,而同时保证虚幻引擎 4 松散打包架构 的优势。它同时提供了一套工具,协助审核硬盘和内存使用,提供所需信息,以优化资源组织,在部署游戏时进行 烘焙和数据块划分 。
我们可以在项目设置中自定义AM
类
或者修改DefaultEngine.ini
文件
1 | [/Script/Engine.Engine] AssetManagerClassName=/Script/Module.UClassName 其中"Module"代表项目的模块名,"UClassName"则代表希望使用的 UClass 名。 |
GameplayAbilitySystem入门与实战(七):GameplayEffect(二)
前言
上一篇讲述了GE
的一些基本概念, 非常概念化没有实战部分, 很容易混淆和忘记, 本片我们结合实际项目再配合GA
的使用来模拟几个技能效果
伤害计算
我们在前面测试GA
的时候已经简单测试了伤害,不过那个伤害就固定的一个值, 下面我们用自定义的类GEEC
来计算这个伤害
1 | USRGEEC_Damage : public UGameplayEffectExecutionCalculation |
给上我们的GEEC
GameplayAbilitySystem入门与实战(八):GameplayCueNotify
前言
GameplayCueNotify(GCN)
用于非逻辑层的效果,如音效,特效,相机震动等
CGN
有两个基类,如下图
GameplayCue Class |
Event | GE 类型 |
Description |
---|---|---|---|
GameplayCueNotify_Static |
Execute |
Instant or Periodic |
一般处理一次性触发的效果如打击效果 |
GameplayCueNotify_Actor |
Add or Remove |
Duration or Infinite |
此类GC 是实例化的,它们可以随着时间进行操作,直到它们被“删除”。当支持的“Duration”或“Infinite”GE 被移除或手动调用remove时,这些对于循环声音和粒子效果是很好的。它们还提供了一些选项来管理允许同时“添加”的数量,以便多个应用程序使用相同效果时只启动一次声音或粒子。 |
使用
GameplayCueNotify_Actor
时注意Auto Destroy on Remove
选项,否则后续调用add
可能不能正常工作
GameplayAbilitySystem入门与实战(六):GameplayEffect(一)
前言
GameplayEffect
在GAS
框架中的重要性不言而喻, 内容非常多,,但是本身基本上只作为一个数据载体而存在,蓝图中也无法重写和执行任何事件.
本篇梳理一下GE
的常用属性和基本概念, 实战部分我们在下一篇展开
基础定义
GE
是属性修改的容器, 分为如下几个类型
Duration Type | GameplayCue Event | When to use |
---|---|---|
Instant |
Execute | 对BaseValue 的立即生效的处理,GameplayTags 不会被应用到, 即使在一帧之内 |
Duration |
Add & Remove | 对CurrentValue 持续修改.可以应用GameplayTags .持续事件在GE类中指定 |
Infinite |
Add & Remove | 类似Duration ,但是是永久的直到手动移除(如通过ASC) |
Duration
和Infinite
模式会出现Period
选项
如果ExecutePeriodicEffectOnApplication
=true,那么每隔Period
秒就执行
periodic inhibition policy
刷新策略,如是否覆盖
如果Tag
匹配或者不匹配, GE可以临时性的关闭或者开启,这移除操作不会移除GE,只是临时的移除GE的修改效果
如果要手动的直接应用GE的修改, 可以调用
1 | UAbilitySystemComponent::ActiveGameplayEffects.SetActiveGameplayEffectLevel(FActiveGameplayEffectHandle ActiveHandle, int32 NewLevel) |
GE
的属性设置一般建议在编辑器用蓝图编辑, 理论上可以用cpp
设定参数, 但是不直观也比较麻烦
GameplayAbilitySystem入门与实战(五):GameplayAbility(二)
前言
前文已经大概了解了GA
的大致内容,本片结合项目来详细使用一下技能.
因为技能可以是通过按键直接触发, 我们在GA
中多数是播放动画来表示技能执行的, 所以我们需要一个一个方便我们GA
使用的播放动画的节点
GAS
中有很多已经封装好的异步节点, 很多都是非常有用的,如下图(太多无法截全)
其中有一个PlayMontageAndWait
的节点, 可以用这个来播放动画蒙太奇, 然后通过动画通知来开启攻击能力, 攻击者(或者武器)触发攻击事件, 然后触发对应的GE
来达到伤害的目的
那么我们重新捋一下, 我们在GA
中播放动画, 然后外面的动画通知和检测我们不管, 我们还在GA
这里监听某些Tag
的事件, 响应以后我们在这里应用GE
效果(ActionRPG
的思路),这样是不是更简单直观一点
照着这个思路我们来做一下
GameplayAbilitySystem入门与实战(四):GameplayAbility(一)
GameplayAbilitySystem入门与实战(三):几个有用的异步事件
GameplayAbilitySystem入门与实战(二):属性
GameplayAbilitySystem入门与实战(一):初始化
前言
引用官网的一段话介绍一下GAS
系统
Gameplay技能系统 是一个高度灵活的框架,可用于构建你可能会在RPG或MOBA游戏中看到的技能和属性类型。你可以构建可供游戏中的角色使用的动作或被动技能,使这些动作导致各种属性累积或损耗的状态效果,实现约束这些动作使用的”冷却”计时器或资源消耗,更改技能等级及每个技能等级的技能效果,激活粒子或音效,等等。简单来说,此系统可帮助你在任何现代RPG或MOBA游戏中设计、实现及高效关联各种游戏中的技能,既包括跳跃等简单技能,也包括你喜欢的角色的复杂技能集。
此篇为
GameplayAbilitySystem入门
文档的开篇,此系列文档会从零开始记录用UE4
GAS
插件为基础, 尝试开发一个简单的ARPG游戏的案例