UE4新建C++项目的时候显示编译错误,求大神帮忙(报错在下方)

[图片] 为什么只要新建C++项目就显示这个啊 有没有大佬知道的

先卸载以前安装的vs2015(下面外国友人提供了如何完整卸载vs2015的方法)
然后重启电脑,重启ue新建c++工程(注意如果还是失败,出现win8.1SDK缺失错误,请自行安装win8.1sdk)

你对这个回答的评价是?

下载百度知道APP,抢鲜体验

使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。

在UE4中,项目中的全部资源都是存储在硬盘中,当须要用到资源时,则须要将其加载进入内存中使用。为了更好的表示(引用)资源,UE4提供了两种引用资源的方式——硬引用、软引用。c++


硬性引用,即对象 A 引用对象 B,并致使对象 B 在对象 A 加载时加载。通俗点说,硬引用所表示的资源在引用初始化时就加载进内存,所以硬引用的资源几乎不须要加载方法。异步

引用资源的最简单方法是建立指针UProperty并为它指定一个类别,这种称为硬指针。
在UE4中,若是有一个硬UObject指针属性引用了一个资源(每每在蓝图上设置引用),则加载包含这个属性的对象(放在贴图中,或者从gameinfo等引用)时,就会加载这个资源。async

FSoftObjectPath.SolveObject() 能够检查其引用的资源是否已经载入在内存中,若载入则返还资源对象指针,不然返还空。

  • FStringAssetReference:其实只是一个听起来更容易理解的别名,它实际在UE4源码里是这样的:
  • TSoftObjectPtr是包含了FSoftObjectPath的TWeakObjectPtr,可经过模板参数来设置特定资源类型,这样就能够限制编辑器UI仅容许选择特定的资源种类。

    TSoftObjectPtr.Get() 能够检查其引用的资源是否已经载入在内存中,若已载入则返还资源对象指针,不然返还空。想要资源加载进内存,则能够调用ToSoftObjectPath()来获得FSoftObjectPaths用于加载。


另外有两个函数叫:StaticLoadObject()和StaticLoadClass(),是LoadObject()和LoadClass()的早期版本,前二者须要手动强转和填写冗杂参数,后二者则是前二者的封装,使用更方便,推荐使用后者。

此外一提,还有一个可能经常使用的全局函数FindObject(),用来查询资源是否载入进内存,若存在则返还资源对象指针,不然返还空。可是咱们不用先查询再使用LoadXXX,由于LoadXXX里自己就有用到FindObject来检查存在性。

因为软引用里包含资源完整路径名,所以无需再写一次路径名,而是调用如上成员方法来加载资源进内存。而软引用的做用不只如此,它还能够用于下面要介绍的资源异步加载方式。


即便能够控制加载资源的时机,但若是加载的资源对象很大(或者同一时刻加载多个资源),仍是会形成卡顿,为了不阻塞主线程,异步加载的方式必不可少。

//根据一组软引用来异步加载一组资源,加载完后调用委托

若是资源永再也不使用,想将资源对象从内存上卸载,代码以下:


UE4的对象(即从UObject派生出来的类对象)最好不要用C++的new/delete,而应使用UE4提供的对象生成方法,要否则继承UObject的垃圾回收能力就无从用处。

建立Actor派生类对象

注意SpawnActor不能放在构造函数,可是能够放在其余时期的函数里,例如BeginPlay()、Tick()...不然可能会编译后就crash。

蓝图因为本质是一种脚本,不是直接的C++类,所以每每须要借助动态类型来生成蓝图对象。全部的加载资源并建立到场景中的方式都离不开SpawnActor这一句代码。

1.经过已肯定的父类来生成蓝图对象

若是你的蓝图派生于某个C++类,那么能够直接访问该类的StaticClass()并用于SpawnActor来建立蓝图对象。


我要回帖

更多关于 隐藏模块出现编译错误 的文章

 

随机推荐