2019-05-16 13:46:50 wang371372 阅读数 252
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2510 人正在学习 去看看 杨石兴

    unreal源码的获取安装编译参考这编文章:

           https://www.cnblogs.com/sundayofit/p/8448786.html

    我的编译环境是VS2017,win7系统,编译时,提示如下错误问题:

          错误 MSB3644 未找到框架“.NETFramework,Version=v4.6.2”的引用程序集 的解决方法。

   按照网上的方法,安装.NET 4.6.2的sdk,重启,修复。。。。。结果依然无法找到4.6.2框架。干脆使用最粗暴的方式,搜索unreal源码目录下的所有.csproj文件,打开将下面的4.6.2改为4.6.1。编译成功,不过编译过后的文件贼大,整个文件夹有67G。

<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
改为
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>

  

2019-11-25 15:32:42 u012911347 阅读数 85
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2510 人正在学习 去看看 杨石兴

使用Unreal不多,本博客就编译配置等做简单记录。

Windows平台,运行Unreal,选了一个小车的工程:

这个是C++的,不是蓝图的。打开之后点击播放和启动都能运行:

然后点击编译,会在工程目录下得到Build和Binaries目录,里面有编译后的东西。不过运行Binaries目录下的失败了,然后我用这种方式编译好了:

接着配置Unreal的安卓编译环境,网上许多博客都有。不过我没用NVPACK,而是用的Android Studio,它会有安卓sdk和jdk,所以我想要Unreal直接用它的。

放个截图:

默认的Android Studio有sdk和jdk,但是没用ndk。所以我一开始没给unreal设置ndk,不过无法编译。用Android Studio安装ndk,设置好了就能编译了。

不过要注意,别安装最新的21,Unreal推荐的是r-14b,最高支持r18b。我Android Studio安装了18的ndk,但是无法编译,因为unreal告诉我它是r18c。然后用Android Studio继续安装了17,可以了。这里注意一点,我NDK API Level写了android-18,实际上比安装的高,不过应该没什么影响,写latest应该也行。另外ant可以留空,不影响。

由于我使用Mate 10测试,当前是安卓9,也就是29的api等级,所以我将unreal的最低和目标安卓都设置为了29,导致编译成功却在安装的时候出现unknown package com.xxx.xxx,所以将最低等级改为19,该操作就直接解决了该问题。再放两个图:

最终运行到了安卓上面,和电脑端不同的是自动出现了左右两个控制器,控制速度和方向:

2017-04-22 02:39:05 yangchao_emigmo 阅读数 2913
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2510 人正在学习 去看看 杨石兴

1. 安装UnrealEngine游戏引擎及其插件

1.1 下载Unreal源码(需要绑定github账号) https://www.unrealengine.com/

注: 官方要求绑定绑定github账号

 \git clone https://github.com/EpicGames/UnrealEngine.git 

1.2 生产Unreal编译文件

cd UnrealEngine
./Setup.sh 
./GenerateProjectFiles.sh  

1.3 Linux额外活儿

在Linux下需要额外干一活,下载 OpenEXR patch for linux
运行git apply 0001-Fix-openexr-support-for-linux-version.patch

1.4 编译Unreal和插件及测试

 make -j
 # for test
 ./Engine/Binaries/Linux/UE4Editor 
 # 并创建一个第一人称视角的项目(注意:创建C++工程,后期用Qt Creator编译)

安装成功能看到如下图

这里写图片描述

1.5 下载安装unrealcv插件 http://unrealcv.org/

git clone https://github.com/unrealcv/unrealcv.git 
cd unrealcv
export UE4=<path-to-UnrealEngine> 
sh build.sh 
# 出现 Automation.Execute: BUILD SUCCESSFUL 为编译成功 
cd ..
cp -r unrealcv <path-to-UnrealEngine>/Engine/Plugins/
# 如果只是安装到某个工程下
# 在该工程下(包含有<工程名>.uproject)创建 `Plugins` 文件夹 
cp -r unrealcv Plugins/

使得最后在 Menu —- Edit —- Plugins 能看到如下:

这里写图片描述

使用该插件: World Settings –> Game Mode –> GameMode Override, 选择 UE4CVGameMode.

2. 安装Qt 和Qt Creator

2.1 下载Qt

到这个地址http://download.qt.io/official_releases/qt/5.8/5.8.0/下载文件。
注意: 下载的文件为 .run格式,下载后安装直接允许该文件按照提示安装就好了,他会安装qt5.8.0,同时还有他对应的qtcreator编辑器。

2.2 安装CLANG-3.5编译器

sudo apt-get install clang-3.5
注: 如使用 g++ 会出现问题

2.3 配置Qt Creator

2.3.1 打开Unreal工程并配置Clang编译环境

Open Project 选择生成的 <工程名>.pro 文件打开,会自己进入工程配置界面 在Projects(小扳手)的界面:

这里写图片描述

Manage Kits...CompilersAddClang 分别添加ClangClang++

这里写图片描述

KitsAdd定义新建的配置名称为Desktop None Clang,在下面的Compiler选项框里,选择刚刚加好的Clang-3.5和Clang++-3.5;下方的Qt Version选择Qt 5.8.0即可(反正暂时用不到,随便选)

这里写图片描述

2.3.2 配置Qt Creator-Unreal编译环境

Desktop None Clang配置下

Build--Build Steps--Make--Make arguments改为 <工程名>Editor -j 12
Build--Clean Steps--Make--Make arguments改为 <工程名>Editor> ARGS="-clean"

这里写图片描述

2.3.3 配置Qt Creator-Unreal运行环境

在Desktop None Clang配置下的

Run--Run--Executable改为 <UnrealEngine根目录>/Engine/Binaries/Linux/UE4Editor
Run--Run--Command line arguments改为 <工程根目录>/<工程名>.uproject

这里写图片描述

2.3.4 测试Qt Creator-Unreal运行环境

点击Debug或Run按钮,应该先执行编译,然后弹出UE4Editor窗口:

这里写图片描述

配置完成
time: 2017.04.22-03:18

2017-07-29 09:28:05 huihut 阅读数 1572
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2510 人正在学习 去看看 杨石兴

Unreal 源码编译运行 Missing cached shader map… 的问题

问题描述

Unreal 源码是 Github-release 分支,版本是4.16。

编译运行Unreal引擎源码的时候,出现虚幻编辑器的窗口,但是卡在45%不动。

并在调试窗口输出:

Missing cached shader map for material WorldGridMaterial, compiling. Is special engine material.

同类问题

同样这个问题,在unrealengine社区有人遇到,但没有说明具体原因及解决方案。

answers.unrealengine.com - UE4.7 source build, missing cached shader

结果

结果我没有进行任何操作,再等会儿 居然成功运行了起来!

我猜测可能是WorldGridMaterial这个材质需要联网下载,然后由于网络问题在45%处卡住了一会儿。

2018-09-01 12:35:21 netyeaxi 阅读数 1043
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2510 人正在学习 去看看 杨石兴

本文目的是将在Unreal Engine 4开发中遇到的一些问题及解决方案记录下来,方便以后查找。

 版本:4.18

问题一:

在编译如下代码时:

UWidgetComponent* WidgetComponent = Cast<UWidgetComponent>(this->GetComponentByClass(UWidgetComponent::StaticClass()));

报如下错误:

error LNK2019: unresolved external symbol 
"__declspec(dllimport) private: static class UClass * __cdecl UWidgetComponent::GetPrivateStaticClass(void)"
 (__imp_?GetPrivateStaticClass@UWidgetComponent@@CAPEAVUClass@@XZ) 
referenced in function "protected: virtual void __cdecl ATankModel::BeginPlay(void)" (?BeginPlay@ATankModel@@MEAAXXZ)

从错误信息中看,好像是UWidgetComponent::GetPrivateStaticClass(void)方法未找到。但实际上UWidgetComponent中并不存在此方法。而此问题实际上是由于UWidgetComponent所在的模块UMG,没有加入到需要编译的模块中造成的。修改方式为在工程的.Build.cs文件的编译选项中添加此模块:

using UnrealBuildTool;

public class ClientProj : ModuleRules
{
	public ClientProj(ReadOnlyTargetRules Target) : base(Target)
	{
		PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;

		PublicDependencyModuleNames.AddRange(
		    new string[] { "Core", "CoreUObject", "Engine", "InputCore", "UMG" });
    }
}

 

问题二:

在编译如下代码时:

template<typename T>
ValueBoxImpl<T>& getValueBox(std::shared_ptr<ValueBox> valueBox_ptr) {
	return dynamic_cast<ValueBoxImpl<T>&>(*valueBox_ptr);
};

报如下错误:

C:\Epic Games\UE_4.18\Engine\Source\Runtime\CoreUObject\Public\Templates/Casts.h(413): 
error C4541: 'dynamic_cast' used on polymorphic type 'tanx::ValueBox' with /GR-; 
unpredictable behavior may result

错误原因是RTTI未启用,需要在.Build.cs文件中启用RTTI功能:

using UnrealBuildTool;

public class ClientProj : ModuleRules
{
	public ClientProj(ReadOnlyTargetRules Target) : base(Target)
	{
		PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;

		bUseRTTI = true;

		PublicDependencyModuleNames.AddRange(
		    new string[] { "Core", "CoreUObject", "Engine", "InputCore", "UMG" });
    }
}

 

问题三:

在编译如下代码时:

class GameHome {
private:
	AClientProjGameModeBase& gameMode;
}

报如下错误:

game_home.h(16): error C2143: syntax error: missing ';' before '&'
game_home.h(16): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
game_home.h(16): error C2238: unexpected token(s) preceding ';'

错误原因在于没有在ATanxClientProjGameModeBase前加上class,修改后编译通过:

class GameHome {
private:
	class AClientProjGameModeBase& gameMode;
}

从这个例子可以看到,从unreal提供的类作为父类衍生出的类,在使用时最好都加上class来修饰。

 

问题四:

编译打包时报如下错误:

error C4577: 'noexcept' used with no exception handling mode specified; termination on exception is not guaranteed. Specify /EHsc

原因在于C++中使用了exception处理的机制。修改方法是在.Build.cs文件中打开相关的编译选项“bEnableExceptions”:

using UnrealBuildTool;

public class ClientProj : ModuleRules
{
	public ClientProj(ReadOnlyTargetRules Target) : base(Target)
	{
		PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;

		bUseRTTI = true;

		bEnableExceptions = true;

		PublicDependencyModuleNames.AddRange(
		    new string[] { "Core", "CoreUObject", "Engine", "InputCore", "UMG" });
    }
}

问题五:

在新开的线程中调用SpawnActor,应用会崩溃或什么结果也没有。

SpawnActor必须在game thread中被调用,如果不在game thread中被调用,可能会导致系统自动退出。可以通过check(IsInGameThread());来检测当前线程是否是game thread。

问题六:

在Plugins中设置了

bUseRTTI = true;
bEnableExceptions = true;

 结果打包Windows应用时,报如下警告和错误:

warning C4652: compiler option 'C++ Exception Handling Unwinding' inconsistent with precompiled header; current command-line option will override that defined in the precompiled header
warning C4651: '/D_HAS_EXCEPTIONS=0' specified for precompiled header but not for current compile
error LNK2019: unresolved external symbol "__declspec(dllimport) public: __cdecl std::bad_cast::bad_cast(char const *)"

造成此问题的原因是
UE_4.18\Engine\Intermediate\Build\Win64\UE4\Development\Engine\SharedPCH.Engine.RTTI.h
在编译成
UE_4.18\Engine\Intermediate\Build\Win64\UE4\Development\Engine\SharedPCH.Engine.RTTI.h.pch
的过程中没有设置bEnableExceptions = true;

需要修改UE_4.18\Engine\Source\Programs\UnrealBuildTool\Configuration\UEBuildModuleCPP.cs

// 修改前
public PrecompiledHeaderInstance FindOrCreateSharedPCH(UEToolChain ToolChain, PrecompiledHeaderTemplate Template, bool bOptimizeCode, bool bUseRTTI, ActionGraph ActionGraph)

// 修改后
public PrecompiledHeaderInstance FindOrCreateSharedPCH(UEToolChain ToolChain, PrecompiledHeaderTemplate Template, bool bOptimizeCode, bool bUseRTTI, bool bEnableExceptions, ActionGraph ActionGraph)

并在此函数中添加

CompileEnvironment.bEnableExceptions = bEnableExceptions;

// 修改前
PrecompiledHeaderInstance Instance = FindOrCreateSharedPCH(ToolChain, Template, ModuleCompileEnvironment.bOptimizeCode, ModuleCompileEnvironment.bUseRTTI, ActionGraph); 


// 修改后
PrecompiledHeaderInstance Instance = FindOrCreateSharedPCH(ToolChain, Template, ModuleCompileEnvironment.bOptimizeCode, ModuleCompileEnvironment.bUseRTTI, ModuleCompileEnvironment.bEnableExceptions, ActionGraph); 

再编译打包Windows应用时就不会报错了。

unreal4 源码引言

阅读数 266

UE4自编译UE4Editor

阅读数 1021

unreal Engine4 工程编译

博文 来自: u014787824

编译时出现中文乱码问题

博文 来自: netyeaxi

Unreal4

阅读数 1776

Unreal 4 术语简介

阅读数 897

没有更多推荐了,返回首页