1. 环境准备
- Unreal Engine 5.5:确保引擎已正确安装
- Visual Studio 2022:推荐使用最新版本
- Windows SDK:确保安装了与 Visual Studio 兼容的 Windows SDK 版本
2. 找到 UnrealBuildTool
[UE5 安装目录]\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.exe
[UE5 安装目录]\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.exe
AIGC = 人类提供需求 + AI自动生成内容
例如:
| 人类输入 | AI生成 |
|---|---|
| 写一篇科幻小说 | AI生成完整故事 |
| 输入提示词 | AI生成图片 |
| 上传角色图 | AI生成动画视频 |
| 描述音乐风格 | AI生成音乐 |
是通过摄影机的构图、镜头运动、景别、角度、光影等视觉手段,将创作者的叙事意图、情绪表达和信息传递给观众的视觉表达体系。
例如
一个年轻程序员加班到深夜,毫无灵感。
朋友打来电话邀请他打游戏,
他犹豫后决定放松一下,结果一夜未眠。
固定管线时代: 在早期的游戏引擎中,使用固定管线图形渲染流水线。灯光通常是基于简单的光照模型,如冯·肖定律(Phong Shading)等。这种方法的计算相对简单,但在细节和真实感方面表现一般。
可编程管线和着色器: 随着可编程图形管线的出现,引擎可以更灵活地处理灯光。开发者可以使用自定义的着色器编写更复杂的光照算法,如基于物理的渲染(Physically Based Rendering,PBR)。PBR模型更准确地模拟了真实世界中光的反射和折射。
实时光照技术: 引擎开始引入实时光照技术,如实时全局光照(Real-Time Global Illumination)和实时阴影技术。这些技术旨在模拟真实世界中的光照效果,提高场景的真实感。包括屏幕空间反射(Screen Space Reflection)和环境遮挡(Ambient Occlusion)等技术。
实时光追: 随着硬件性能的提升,一些引擎引入了实时光追技术,这种技术通过模拟光线在场景中的传播来实现更高质量的光照效果。实时光追通常需要更强大的计算资源,但可以提供更真实的光照和阴影。
深度学习和实时渲染: 最近,深度学习技术开始应用于游戏渲染,例如基于机器学习的超分辨率技术、反走样和实时光照估计等。这些技术旨在通过神经网络等方法改善实时渲染的质量和性能。
FGraphPanelNodeFactoryUEdGraphNode ——(NodeFactory)——> SGraphNode
数据节点 UI节点
UEdGraphNode = 编辑器数据节点(逻辑层)SGraphNode = 视觉层 Slate Widget(长什么样)FGraphPanelNodeFactory = 决定这个节点显示成什么样FEdGraphSchemaActionUEdGraphSchema派生类中重写注释GetCreateCommentAction节点 virtual TSharedPtr<FEdGraphSchemaAction> GetCreateCommentAction() const override
{
return TSharedPtr<FEdGraphSchemaAction>(static_cast<FEdGraphSchemaAction*>(new FComboSchemaAction_AddComment));
}
在UE5中,往往有一些定时的需求,比如一段时间内开启护盾(当然这里咱们不考虑使用GAS的GE等效果来实现),这时候往往需要自己设定一个定时器, 给定一个时间用来开启关闭特效。
UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category="DoodleJump")
bool bHasShield = false;
UFUNCTION()
void RemoveShield();
void ADoodleJumpCharacter::GenerateShield_Implementation(float Time)
{
// 如果之前没有护盾才播放护盾开启特效
if (!bHasShield)
{
ShowShieldEffect(true);
}
bHasShield = true;
// 重置计时器(重新计时 / 延长)
GetWorldTimerManager().ClearTimer(ShieldTimerHandle);
GetWorldTimerManager().SetTimer(
ShieldTimerHandle,
this,
&ADoodleJumpCharacter::RemoveShield,
Time,
false
);
UE_LOG(LogTemp, Log, TEXT("Shield %s for %.2f seconds"),
bHasShield ? TEXT("extended") : TEXT("activated"),
Time);
}
void ADoodleJumpCharacter::RemoveShield()
{
bHasShield = false;
ShowShieldEffect(false);
UE_LOG(LogTemp, Log, TEXT("Shield Expired"));
}
UE 的碰撞系统由三部分组成:
碰撞通道(Collision Channel)
用于标记对象所属类型。
UE 内置两种类型:
Pawn、WorldStatic、WorldDynamic。 // 设置光照模式
UFUNCTION(BlueprintCallable)
void SetViewMode(EViewModeIndex ViewMode) {
ApplyViewMode(ViewMode, false, GEngine->GameViewport->EngineShowFlags);
GEngine->GameViewport->ViewModeIndex = ViewMode;
}