先卸载以前安装的vs2015(下面外国友人提供了如何完整卸载vs2015的方法)
然后重启电脑,重启ue新建c++工程(注意如果还是失败,出现win8.1SDK缺失错误,请自行安装win8.1sdk)
你对这个回答的评价是?
[图片] 为什么只要新建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() 能够检查其引用的资源是否已经载入在内存中,若载入则返还资源对象指针,不然返还空。
TSoftObjectPtr是包含了FSoftObjectPath的TWeakObjectPtr,可经过模板参数来设置特定资源类型,这样就能够限制编辑器UI仅容许选择特定的资源种类。
TSoftObjectPtr.Get() 能够检查其引用的资源是否已经载入在内存中,若已载入则返还资源对象指针,不然返还空。想要资源加载进内存,则能够调用ToSoftObjectPath()来获得FSoftObjectPaths用于加载。
另外有两个函数叫:StaticLoadObject()和StaticLoadClass(),是LoadObject()和LoadClass()的早期版本,前二者须要手动强转和填写冗杂参数,后二者则是前二者的封装,使用更方便,推荐使用后者。
此外一提,还有一个可能经常使用的全局函数FindObject(),用来查询资源是否载入进内存,若存在则返还资源对象指针,不然返还空。可是咱们不用先查询再使用LoadXXX,由于LoadXXX里自己就有用到FindObject来检查存在性。
因为软引用里包含资源完整路径名,所以无需再写一次路径名,而是调用如上成员方法来加载资源进内存。而软引用的做用不只如此,它还能够用于下面要介绍的资源异步加载方式。
即便能够控制加载资源的时机,但若是加载的资源对象很大(或者同一时刻加载多个资源),仍是会形成卡顿,为了不阻塞主线程,异步加载的方式必不可少。
//根据一组软引用来异步加载一组资源,加载完后调用委托若是资源永再也不使用,想将资源对象从内存上卸载,代码以下:
UE4的对象(即从UObject派生出来的类对象)最好不要用C++的new/delete,而应使用UE4提供的对象生成方法,要否则继承UObject的垃圾回收能力就无从用处。
注意SpawnActor不能放在构造函数,可是能够放在其余时期的函数里,例如BeginPlay()、Tick()...不然可能会编译后就crash。
蓝图因为本质是一种脚本,不是直接的C++类,所以每每须要借助动态类型来生成蓝图对象。全部的加载资源并建立到场景中的方式都离不开SpawnActor这一句代码。
1.经过已肯定的父类来生成蓝图对象
若是你的蓝图派生于某个C++类,那么能够直接访问该类的StaticClass()并用于SpawnActor来建立蓝图对象。