UE5 中 LiveLink 的开发全流程教程

本文提供了一个从头开始的UE5 LiveLink开发教程,涵盖了如何创建独立于引擎的程序、设置Build.cs和Target.cs文件、实现LiveLink演示,包括命令行参数解析和核心逻辑,以及如何在游戏内使用和打包LiveLink功能。教程强调了正确配置以避免警告和错误,并展示了在Unreal Editor中观察到的效果。
摘要由CSDN通过智能技术生成

注意,需要有源代码版本的 Unreal Engine,而不是从游戏 Launcher 中下载的 Unreal 版本。

本文使用是 Unreal Engine 5.1 版本。关于一些基础 API 介绍,可以参考之前的一篇

起点

可以将 Engine\Source\Programs\BlankProgram 作为模板拷贝一份,然后重新命名(可以使用文本编辑器进行全局替换之类的),这里命名成 CircleLiveLinkProvider,作为 Program 的起点。

使用 GenerateProjectFiles 刷新项目,这样新的 Program 就会出现在 UE 的工程中。

// CircleLiveLinkProvider.cpp
#include "CircleLiveLinkProvider.h"

#include "RequiredProgramMainCPPInclude.h"

DEFINE_LOG_CATEGORY_STATIC(LogCircleLiveLinkProvider, Log, All);

IMPLEMENT_APPLICATION(CircleLiveLinkProvider, "CircleLiveLinkProvider");

INT32_MAIN_INT32_ARGC_TCHAR_ARGV()
{
   
	GEngineLoop.PreInit(ArgC, ArgV);
	UE_LOG(LogCircleLiveLinkProvider, Display, TEXT("Hello World"));
	FEngineLoop::AppExit();
	return 0;
}

编译一下,在 Engine\Binaries\Win64(应该是对应平台下,我用的是 Windows,所以是在 Win64)文件夹下,会有对应编译好的可执行文件。

脱离引擎

如果想让程序独立引擎进行运行,需要使用和 Unreal 源码组织结构相同的目录层次结构。如果这时候你把生成的 .exe 拷贝出来运行,是会出现警告的,会提示没有游戏配置和引擎配置。

LogPaths: Warning: No paths for game localization data were specifed in the game configuration.
LogInit: Warning: No paths for engine localization data were specifed in the engine configuration.
LogCircleLiveLinkProvider: Display: Hello World

但是如果在 Engine\Binaries\Win64 文件夹下进行运行(也就是程序生成的目录),并不会出现这种问题。

这种裸 exe 其实是会有一些副作用的,比如我的电脑上,运行之后,会在 C:\Engine 中生成日志文件。

要想真正独立运行,我们需要把 .exe,放入到一个 伪装 的 Engine 下面。我们按照 Engine\Binaries\Win64 创建文件夹,并把引擎 Engine.和游戏配置拷贝出来。

CircleLiveLinkProvider
└─Engine
    ├─Binaries
    │  └─Win64
    │          CircleLiveLinkProvider.exe
    │          CircleLiveLinkProvider.pdb
    │
    └─Config
            Base.ini
            BaseEngine.ini
            BaseGame.ini

这样这个 Program 就可以独立运行了。运行程序之后,会发现自动在 Engine 文件夹中生成了 ProgramsSaved

└─Engine
    ├─Binaries
    │  └─Win64
    │          CircleLiveLinkProvider.exe
    │          CircleLiveLinkProvider.pdb
    │
    ├─Config
    │      Base.ini
    │      BaseEngine.ini
    │      BaseGame.ini
    │
    ├─Programs
    │  └─CircleLiveLinkProvider
    │      └─Saved
    │          ├─Config
    │          │  ├─CrashReportClient
    │          │  │  └─UECC-Windows-69032E0743138D60D19DF9BAA8B91E3E
    │          │  │          CrashReportClient.ini
    │          │  │
    │          │  └─WindowsEditor
    │          │          Engine.ini
    │          │          Game.ini
    │          │
    │          └─Logs
    │                  CircleLiveLinkProvider.log
    │
    └─Saved
        └─Config
            └─WindowsEditor
                    Manifest.ini

可以看到,日志就会出现在我们创建的文件夹中,而不会出现在系统默认(缺省)的执行路径中。

Build.cs

引入 LiveLink 所需的依赖,LiveLink 默认依赖 Udp,所以需要引入 MessagingUdpMessaging

// Copyright Epic Games, Inc. All Rights Reserved.

using UnrealBuildTool;

public class CircleLiveLinkProvider : ModuleRules
{
   
	public CircleLiveLinkProvider(ReadOnlyTargetRules Target) : base(Target)
	{
   
		PublicIncludePaths.Add("Runtime/Launch/Public");

		PrivateIncludePaths.Add("Runtime/Launch/Private");      // For LaunchEngineLoop.cpp include

		PrivateDependencyModuleNames.AddRange(new[]
		{
   
			"Core",
			"CoreUObject",
			"Projects",
			"LiveLinkMessageBusFramework",
			"LiveLinkInterface",
			"Messaging",
			"UdpMessaging",
		});
	}
}

Target.cs

// Copyright Epic Games, Inc. All Rights Reserved.

using UnrealBuildTool;
using System.Collections.Generic;

[SupportedPlatforms(UnrealPlatformClass.All)]
public class CircleLiveLinkProviderTarget : TargetRules
{
   
	public CircleLiveLinkProviderTarget(TargetInfo Target) : base(Target)
	{
   
		Type = TargetType.Program;
		IncludeOrderVersion = EngineIncludeOrderVersion.Latest;
		LinkType = TargetLinkType.Monolithic;
		LaunchModuleName = "CircleLiveLinkProvider";

		// Lean and mean
		bBuildDeveloperTools = false;

		// Ne
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值