UE5 中 LiveLink 的开发全流程教程

注意,需要有源代码版本的 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;

		// Neve
  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值