标签: unreal-engine4

虚幻引擎在 Linux 上启动时崩溃

我已经从源代码编译了虚幻引擎,一切都很成功。但是当我尝试启动 UE4Editor 时它崩溃了。控制台上的错误是:

[2017.04.14-05.25.55:381][  0]LogExit: Exiting.
Engine crash handling finished; re-raising signal 11 for the default handler. Good bye.
Run Code Online (Sandbox Code Playgroud)

附加崩溃日志和诊断文件。

环境:

Linux andrii-asus 4.4.0-72-generic #93-Ubuntu SMP Fri Mar 31 14:07:41 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

UE4.log:

Log file open, 04/14/17 08:20:46
LogInit:Display: Running engine without a game
LogPlatformFile: Not using cached read wrapper
LogInit:Display: RandInit(-1053205140) SRandInit(-1053205140).
LogTaskGraph: Started task graph with 5 named threads and 6 total threads with 1 sets of task threads.
LogStats: Stats thread started at …
Run Code Online (Sandbox Code Playgroud)

linux segmentation-fault unreal-engine4

6
推荐指数
1
解决办法
8952
查看次数

如何调试虚幻引擎源代码

我想问一下有没有办法用Visual Studio源代码调试虚幻引擎源代码:

源代码)。

每次我尝试在他们的源代码中设置断点时,只是说它无法到达该断点。

unreal-engine4

6
推荐指数
1
解决办法
1万
查看次数

虚幻引擎 4:在打包游戏中使用 AssetRegistry 加载 PAK 文件、加载/挂载它们以及加载资源的正确方法是什么?

我想这样做:创建并打包原创游戏。然后我想根据原始游戏中的蓝图创建带有新网格/声音/动画和蓝图的附加 PAK 文件。原始游戏不应该知道任何关于附加网格/动画/等的信息。因此,我需要在原始游戏中使用 AssetRegistry 创建一个智能系统,扫描所有 PAK 文件,加载/挂载它们,并使用 AssetRegistry 扫描这些 PAK 文件中的所有资产。

我为实现目标所做的事情:我为目标平台(Windows 独立版)成功创建并打包了原始游戏。然后在项目中,我创建附加内容并为目标平台烘焙它们。我使用 UnrealPak.exe 为附加内容创建 PAK 文件。我可以通过将 PAK 文件放在 Paks 文件夹中来加载/挂载原始游戏中的 PAK 文件,并且它们在游戏启动时加载/挂载(这句话是基于原始游戏中的 LOG 文件,我不知道如何来检查它是否真实)。我什至可以使用 FCoreDelegates::OnMountPak.Execute 来加载/挂载 PAK 文件(这句话也是基于原始游戏的 LOG 文件)。因此加载/挂载 PAK 文件应该可以正常工作。但现在最大的问题在哪里。我想使用 AssetRegistry 扫描所有 PAK 文件中的所有资产。我尝试了我想出的一切。我尝试了 ScanPathsSynchronous 方法、GetAllAssets 方法。唯一发生的事情是它从原始游戏 PAK 文件加载资产。看来 AssetRegistry 对其他 PAK 文件一无所知。我试图用 AddPath 方法告诉 AssetRegistry 这些文件在哪里,但仍然不起作用。

所以我尝试过的示例代码在这里:

         FString path1 = FPaths::ConvertRelativePathToFull(FString("../../../TestPaks/Content/Paks/test.pak"));
     FString path2 = FPaths::ConvertRelativePathToFull(FString("../../../TestPaks/Content/Paks/testmaterial.pak"));        

     bool check1 = false;
     bool check2 = false;
     if (FCoreDelegates::OnMountPak.IsBound())
     {
         check1 = FCoreDelegates::OnMountPak.Execute(path1, 0, nullptr); //Number should be 0-4; specifies …
Run Code Online (Sandbox Code Playgroud)

unreal-engine4

6
推荐指数
1
解决办法
1万
查看次数

如何在 Unreal 蓝图中创建与 Unity LookAt 等效的内容?

在虚幻中,我想要

  1. 旋转角色,使前向向量指向目标的当前位置,
  2. 确保我的演员的向上向量与我的目标的向上向量相同

在Unity3D中,这非常简单。这是一行代码(源代码):

transform.LookAt(target, Vector3.up);
Run Code Online (Sandbox Code Playgroud)

在蓝图中,有一个名为“Find Look at Rotation”的节点。问题是没有向上矢量参数,因此当您接近目标时,可能会出现不需要的滚动旋转。

那么,如何在 Unreal 蓝图中创建相当于 Unity LookAt 的功能呢?

c++ vector rotation unreal-engine4 unreal-blueprint

6
推荐指数
2
解决办法
2万
查看次数

在 UE 5 中,我不断收到此错误 Unable to build while Live Coding is active

自从我升级到 UE 5 以来,我不断收到此错误

错误 实时编码处于活动状态时无法构建。退出编辑器和游戏,或者如果在编辑器或游戏中迭代代码,请按 Ctrl+Alt+F11

有什么解决办法吗?

unreal-engine4 unreal-engine5

6
推荐指数
3
解决办法
2万
查看次数

虚幻引擎如何实现UPROPERTY宏?

我想UPROPERTY()在我的项目中实现类似宏的东西,但我找不到任何关于它实际是什么的参考。我的意思是,有关于这个宏如何工作的教程,但这些只是用例。

编译器如何知道UPROPERTY()引用了它下面的变量?

例子:

UPROPERTY(EditAnywhere)
int x = 0;
Run Code Online (Sandbox Code Playgroud)

我知道虚幻是开源的,但它的代码库非常庞大。

c++ unreal-engine4 unreal-engine5

6
推荐指数
1
解决办法
1536
查看次数

如何在代码中使用Unreal 4 ProceduralMeshComponent类?

我试图找到一些关于如何使用Unreal 4 ProceduralMeshComponents通过代码实现功能的示例或文档.网站上这些类的文档非常稀疏,只提供了它们如何运作的最详细信息:

https://docs.unrealengine.com/latest/INT/BlueprintAPI/Components/ProceduralMesh/index.html

我知道,我知道,他们已经接触过蓝图编辑器,所以我知道我可以在引擎本身使用它们.但是,我想了解流程的确切细节,这意味着我需要通过代码在项目中实现这一点.

此外,我觉得仅通过Blueprint节点使用这些组件限制了使用此强大功能可以完成的工作的范围.

我还搜索了任何示例(在网上或论坛上),但找不到任何不涉及以某种方式使用蓝图的内容.另一个问题是这个功能是最近才引入的,在此之前,Rama(一个出色的虚幻用户)提出了一个允许程序网格生成的类似API.但是现在它已被弃用,并且有许多示例引用该版本.

不要误解我的意思,我不是在这里讨论蓝图.我喜欢这个工具并认为它们是Unreal 4中最好的部分之一.但是出于我的目的,我要求从头到尾完全暴露我的过程.

我将非常感谢您可以共享任何实现Unreal Procedural Mesh类的资源或示例,完全通过代码实现某些效果.

c++ procedural-generation unreal-engine4

5
推荐指数
0
解决办法
4730
查看次数

虚幻引擎:在不阻止游戏线程的情况下访问/保存游戏内图像到磁盘

我正在基于虚幻的开源无人机仿真(Microsoft AirSim)上进行工作,在该仿真中,我试图从连接到无人机的摄像机捕获并保存图像。下面的图像提供了游戏外观的概念。底部最右边的视图是摄像机的实际视图,其他两个视图只是同一图像的处理版本。

无人机模拟

现在,它的设置方式是这样的:有一个相机资产,通过代码作为捕获组件读取。屏幕快照中的三个视图链接到此捕获组件。无人机在游戏中飞来飞去时,视图流没有任何问题。但是,当涉及到记录屏幕截图时,当前代码从该捕获组件设置一个TextureRenderTargetResource,然后调用ReadPixels并将该数据保存为图像(请参见下面的代码流)。照原样使用ReadPixels()会直接阻止游戏线程,并使整个游戏速度大大降低:当我开始记录时,它从〜120 FPS降至不到10 FPS。

bool saveImage() {
  USceneCaptureComponent2D* capture = getCaptureComponent(camera_type, true);
  FTextureRenderTargetResource* RenderResource = capture->TextureTarget->GameThread_GetRenderTargetResource();
  width = capture->TextureTarget->GetSurfaceWidth();
  height = capture->TextureTarget->GetSurfaceHeight();

  TArray<FColor> imageColor;
  imageColor.AddUninitialized(width * height);
  RenderResource->ReadPixels(bmp);
}
Run Code Online (Sandbox Code Playgroud)

这篇文章,似乎很明显ReadPixels()将“阻塞游戏线程,直到渲染线程赶上”。本文包含用于读取像素的“非阻塞”方法的示例代码(通过移除FlushRenderingCommands()并使用RenderCommandFence标志来确定何时完成任务),但并不能显着提高性能:保存的图像稍高一些,但是游戏线程仍然只能以约20 FPS的速度运行,因此很难控制无人机。是否有任何更有效的异步方法可以实现我正在尝试的功能,例如在单独的线程中?我也对为什么代码在尽快将这些图像流式传输到屏幕上没有问题感到困惑,但是保存图像似乎更加复杂。它'

unreal-engine4

5
推荐指数
1
解决办法
2634
查看次数

UnrealBuildTool:ld.lld:错误:无法找到库

操作系统:Manjaro Linux 4.19.28-1-MANJARO

我有一些关于 的ld问题UnrealBuildTool。我对所有虚幻的东西都是新的。

一周前,我发现了一些基于Unreal的开源项目。发布的二进制版本运行良好。但它无法在我的电脑上构建。我认为这是 gcc 链接器找不到assimp library

所以我设置了环境变量'LIBRARY_PATH''LD_LIBRARY_PATH'但是,UnrealBuildTool似乎没有使用本地计算机的 ld 链接器。

有人对此有想法吗?

日志


  [440/442] Compile BuildSettings.cpp
  [441/442] Compile pugixml.cpp
  [442/442] Link (lld) CarlaEditor
  /home/suho/Repository/UnrealEngine/Engine/Extras/ThirdPartyNotUE/SDKs/HostLinux/Linux_x64/v12_clang-6.0.1-centos7/x86_64-unknown-linux-gnu/bin/ld.lld: error: unable to find library -lassimp
  clang++: error: linker command failed with exit code 1 (use -v to see invocation)
  ERROR: UBT ERROR: Failed to produce item: /home/suho/Workspace/carla-map-editor/Unreal/CarlaEditor/Binaries/Linux/CarlaEditor
         (see /home/suho/Library/Logs/Unreal Engine/LocalBuildLogs/UBT-CarlaEditor-Linux-Development.txt for full exception trace)
  Total build time: 646.23 seconds (Local …
Run Code Online (Sandbox Code Playgroud)

linux linker linker-errors unreal-engine4

5
推荐指数
0
解决办法
3531
查看次数

使用 Python 从虚幻引擎中的类中生成 actor

使用蓝图,我可以SpawnActorFromClass使用StaticMeshActor,但是通过内置的 Python 脚本插件使用 Python 脚本,

unreal.EditorLevelLibrary().spawn_actor_from_class(ue.Class(name='StaticMeshActor'), location, rot)
Run Code Online (Sandbox Code Playgroud)

我有:

LogPython: Error: TypeError: EditorLevelLibrary: Failed to convert parameter 'actor_class' when calling function 'EditorLevelLibrary.SpawnActorFromClass' on 'Default__EditorLevelLibrary'
LogPython: Error:   TypeError: NativizeProperty: Cannot nativize 'Class' as 'ActorClass' (ClassProperty)
LogPython: Error:     TypeError: NativizeClass: Cannot nativize 'Class' as 'Class' (allowed Class type: 'Actor')
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

python scripting unreal-engine4 unreal-blueprint

5
推荐指数
1
解决办法
1802
查看次数