BlueRose
文章97
标签28
分类7
灯光知识与流程学习总结(一)——建立初始场景与材质检查

灯光知识与流程学习总结(一)——建立初始场景与材质检查

前言

本文是对于《Daedalus51的灯光学院系列视频》、《Lighting with Unreal Engine Masterclass视频》、《Ue4照明技术引导系列视频》的总结。相关网址与链接可以参看前一篇文章。

撰写本文时,《Daedalus51的灯光学院系列视频》只看完第一章,所以本文后续还会更改,请各位读者注意。另外因为本人技术能力有限,如有错误还请各位指正。

UE4灯关相关学习资料系

UE4灯关相关学习资料系

前言

分享一些灯光学习资料。

AssetManager系列之Asset Bundles

AssetManager系列之Asset Bundles

Asset Bundles

Asset Bundles(资源束)可以理解为给特定主资源中的次级资源设置“组”,方便你通过“组名”对加载指定组的次级Asset。

AssetManager系列之TAssetPtr与FStreamableManager

AssetManager系列之TAssetPtr与FStreamableManager

TAssetPtr

因为在wiki上已经有介绍TAssetPtr的内容了,所以我就直接翻译了,并且在末尾给予一定的补充。以下是翻译自wiki的内容:

一般情况下,我们无需将这个场景中所有Asset都加载了再进入游戏,我们可以先加载必要Asset,在进入场景后,异步加载剩余的非必要资源。而TAssetPtr可以解决这个问题。TAssetPtr类似于标准指针,其区别在于TAssetPtr指向的资产可能已经加载,也可能还没有加载,如果资产没有加载,则它包含加载该资产所需的信息。(TAssetPtr属于弱指针)

一个简单的引用Asset的方法就是创建带有UProperty标记的TAssetPtr成员变量,并且在编辑器中指定想要加载的Asset。本质上是TSoftClassPtr,包含了FSoftObjectPtr对象。可以通过FSoftObjectPath构造,并用其监视Asset的状态

AssetManager系列之actionRPG项目中的RPGItem类

AssetManager系列之actionRPG项目中的RPGItem类

前言

AssetManager是一个全局单例类,用于管理各种primary assets和asset bundles。配合配套工具 “(Reference Viewer)、“资源审计(Asset Audit)”可以理清Pak文件中Asset的依赖关系以及所占用的空间。

自定义AssetManager可以实现自定义Asset、自定义Asset载入逻辑与控制(异步与同步载入、获取载入进度、运行时修改载入优先级、运行时异步加载强制等待等)、通过网络下载Asset并载入、烘焙数据分包(打包成多个pak)。

在actionRPG项目中通过继承UPrimaryDataAsset来实现自定义DataAsset文件(content browser中能创建的Asset),具体请参照RPGItem,其中包含了包含了文字说明(FTEXT)、物品图标(FSlateBrush)、价格(int32)、相关能力(UGameplayAbility),具体的之后会介绍。

GameplayTag、Event与GameplayCue

GameplayTag、Event与GameplayCue

简述

GameplayAbility框架使用GameplayTag作为各种状态判断的依据,甚至使用它作为Event进行传递。

UAbilityTask

UAbilityTask

UAbilityTask

UAbilityTask继承自UGameplayTask(UGameplayTask可以用来写一些行为树中的一些节点),可以用来实现一些异步功能。比如播放montage后各种事件的处理。

你可以去GameplayAbilities\Public\Abilities\Tasks\目录下寻找作者编写的task类作为相关参考,也可以直接使用(GameplayTasks目录下的案例比较少)。

当然我更加推荐学习actionRPG项目中的PlayMontageAndWaitForEvent,原因有:1、这个task用得最多2、涉及Task的代码相对较多。

其他推荐学习的:UGameplayTask_WaitDelay、UAbilityTask_WaitGameplayEvent、UAbilityTask_WaitGameplayTagAdded、UAbilityTask_WaitGameplayEffectApplied

UGameplayAbility

UGameplayAbility

UGameplayAbility

UGameplayAbility在GameplayAbility框架中代表一个技能(也可以认为是能力,它可以事件主动或者被动技能),我们可以通过继承UGameplayAbility来编写新技能。

UGameplayAbility主要提供以下功能:

  • 使用特性:技能cd、技能消耗等
  • 网络同步支持
  • 实例支持:non-instance(只在本地运行)、Instanced per owner、Instanced per execution (默认)

    其中GameplayAbility_Montage就是non-instanced ability的案例,non-instanced在网络同步中有若干限制,具体的参考源代码。

UGameplayEffect

UGameplayEffect

UGameplayEffect

UGameplayEffect在框架中主要负责各种数值上的效果,如果技能cd、类似黑魂中的异常效果堆叠与buff,甚至连角色升级时的属性点添加都可以使用它来实现。

因为大多数逻辑都是设置数据子类的操作,所以对于这个类,本人推荐使用蓝图来进行操作。

UAttributeSet

UAttributeSet

概述

在GameplayAbility框架中,UAttributeSet负责管理各种属性。