当前位置: 首页 > news >正文

杭州网站建设设计公司哪家好wordpress4.5漏洞

杭州网站建设设计公司哪家好,wordpress4.5漏洞,住房建设厅官方网站,网站常见的风格[toc]在UE4中#xff0c;项目中的所有资源都是存储在硬盘中#xff0c;当需要用到资源时#xff0c;则需要将其加载进入内存中使用。为了更好的表示(引用)资源#xff0c;UE4提供了两种引用资源的方式——硬引用、软引用。资源的硬引用硬性引用#xff0c;即对象 A 引用对…[toc]在UE4中项目中的所有资源都是存储在硬盘中当需要用到资源时则需要将其加载进入内存中使用。为了更好的表示(引用)资源UE4提供了两种引用资源的方式——硬引用、软引用。资源的硬引用硬性引用即对象 A 引用对象 B并导致对象 B 在对象 A 加载时加载。通俗点说硬引用所表示的资源在引用初始化时就加载进内存因此硬引用的资源几乎不需要加载方法。硬指针引用资源的最简单方法是创建指针UProperty并为它指定一个类别这种称为硬指针。 在UE4中如果有一个硬UObject指针属性引用了一个资源(往往在蓝图上设置引用)则加载包含这个属性的对象(放在贴图中或者从gameinfo等引用)时就会加载这个资源。UPROPERTY(EditDefaultsOnly, CategoryBuilding)USoundCue* ConstructionStartStinger;FObjectFinder / FClassFinder若需要用C代码而非蓝图来设置引用则往往需要FObjectFinder、FClassFinder。#include UObject/ConstructorHelpers.h \\需要include的头文件在UE4源码里面FObjectFinder构造函数里通过调用LoadObject()来加载资源而FClassFinder构造函数里调用的也是LoadObject()。注意在使用它们的时候还得遵守如下规则只能在类的构造函数中使用如果在普通的逻辑代码中嵌套这份代码会引起整个编译器的crash。(实际上里面代码就有检查是否在构造函数里否则crash)其次FObjectFinder/FClassFinder变量必须是static的从而保证只有一份资源实例。FObjectFinder一般用来加载非蓝图资源比如StaticMesh、Material、SoundWave、ParticlesSystem、AnimSequence、SkeletalMesh等资源static ConstructorHelpers::FObjectFinder ObjectFinder(TEXT(Texture2D/Game/Textures/tex1.tex1));UTexture2D* Texture2D ObjectFinder.Object;FClassFinder一般用来加载蓝图资源并获取蓝图Class。这是因为如果C要用蓝图创建对象必须先获取蓝图的Class然后再通过Class生成蓝图对象static ConstructorHelpers::FClassFinder BPClassFinder(TEXT(/Game/Blueprints/MyBP));TSubclassOf BPClass BPClassFinder.Class;...//利用Class生成蓝图对象FClassFinder的模版名不能直接写UBlueprint例如FClassFinder是错误的。创建蓝图时选择的是什么父类则写对应的父类名假如是Actor那么要写成FClassFinder否则无法加载成功。FClassFinder的模版名必须和TSubclassOf变量的模版名一致当然也可使用UClass*代替TSubclassOf。实际上TSubclassOf也是UClass*只是更加强调这个Class是从T派生出来的。在启动游戏时若报错提示找不到文件而崩溃(例如Default property warnings and errors:Error: COD Constructor (MyGameMode): Failed to find /Game/MyProject/MyBP.MyBP) 这是因为UE4资源路径的一个规范问题解决办法有两种在copy reference出来的文件路径后面加_C例如Blueprint/Game/Blueprints/MyBP.MyBP_C(_C可以理解为获取Class的意思)。去掉路径前缀例如/Game/Blueprints/MyBP资源的软引用软性引用即对象 A 通过间接机制(例如字符串形式的对象路径)来引用对象 B。硬引用的问题是在容易一开始就加载全部硬引用表示的资源这可能导致资源载入时间过长。而软引用则是可随时灵活加载资源的一种引用而不用硬性地一开始就加载。FSoftObjectPaths、FStringAssetReferenceFSoftObjectPath是一个简单的结构体其中包含了资源的完整名称(一个字符串)。它实质就是用一个字符串来表示对应的资源从而可以随时通过字符串找到硬盘上的目标资源将其载入进内存。FSoftObjectPath.SolveObject() 可以检查其引用的资源是否已经载入在内存中若载入则返还资源对象指针否则返还空。 FSoftObjectPath.IsPending() 可检查资源是否已准备好可供访问。而如何利用FSoftObjectPath加载资源进内存后面还会说到。FStringAssetReference其实只是一个听起来更容易理解的别名它实际在UE4源码里是这样的typedef FSoftObjectPath FStringAssetReference;TSoftObjectPtrTSoftObjectPtr是包含了FSoftObjectPath的TWeakObjectPtr可通过模板参数来设置特定资源类型这样就可以限制编辑器UI仅允许选择特定的资源种类。TSoftObjectPtr.Get() 可以检查其引用的资源是否已经载入在内存中若已载入则返还资源对象指针否则返还空。想要资源加载进内存则可以调用ToSoftObjectPath()来得到FSoftObjectPaths用于加载。同步加载资源LoadObject/LoadClassLoadObject()加载UObject一般用来加载非蓝图资源。UTexture2D* Texture2D LoadObject(nullptr,TEXT(Texture2D/Game/Textures/tex1.tex1));LoadClass()加载UClass一般用来加载蓝图资源并获取蓝图Class。实际上源码里LoadClass的实现是调用LoadObject并获取类型。LoadClass的模版名称和上面FClassFinder一样不能直接写UBlueprint。LoadClass路径规范也和上面的FClassFinder一样带_C后缀或去掉前缀。另外有两个函数叫StaticLoadObject()和StaticLoadClass()是LoadObject()和LoadClass()的早期版本前两者需要手动强转和填写冗杂参数后两者则是前两者的封装使用更方便推荐使用后者。TSubclassOf BPClass LoadClass(nullptr, TEXT(/Game/Blueprints/MyBP));此外一提还有一个可能常用的全局函数FindObject()用来查询资源是否载入进内存若存在则返还资源对象指针否则返还空。但是我们不用先查询再使用LoadXXX因为LoadXXX里本身就有用到FindObject来检查存在性。TryLoad/LoadSynchronousTryLoad()FSoftObjectPaths的方法直接根据路径加载资源。LoadSynchronous()TSoftObjectPtr的方法也是直接根据路径加载资源。由于软引用里包含资源完整路径名因此无需再写一次路径名而是调用如上成员方法来加载资源进内存。而软引用的作用不仅如此它还可以用于下面要介绍的资源异步加载方式。异步加载资源即使可以控制加载资源的时机但如果加载的资源对象很大(或者同一时刻加载多个资源)还是会造成卡顿为了避免阻塞主线程异步加载的方式必不可少。FStreamableManager.RequestAsyncLoad()首先需要创建FStreamableManager官方建议将它放在某类全局游戏单例对象中例如使用GameSingletonClassName在DefaultEngine.ini中指定的对象。FStreamableManager.RequestAsyncLoad()将异步加载一组资源并在完成后调用委托。void UGameCheatManager::GrantItems(){//获取 FStreamableManager的单例对象引用FStreamableManager Streamable ...;//得到一组软引用TArray ItemsToStream;for(int32 i 0; i ItemList.Num(); i)ItemsToStream.AddUnique(ItemList[i].ToStringReference());//根据一组软引用来异步加载一组资源加载完后调用委托Streamable.RequestAsyncLoad(ItemsToStream, FStreamableDelegate::CreateUObject(this, UGameCheatManager::GrantItemsDeferred));}void UGameCheatManager::GrantItemsDeferred(){//do something....}FStreamableManager其实也有同步加载的方法SynchronousLoad()方法将进行一次简单的块加载并返回对象。卸载资源如果资源永不再使用想将资源对象从内存上卸载代码如下Texture2D* mytex; //这里假设mytex合法有效mytex-ConditionalBeginDestroy();mytex NULL;GetWorld()-ForceGarbageCollection(true);创建对象UE4的对象(即从UObject派生出来的类对象)最好不要用C的new/delete而应使用UE4提供的对象生成方法要不然继承UObject的垃圾回收能力就无从用处。创建一般对象如果有UObject的派生类(非Actor、非Component)那么可使用NewObject()模板函数来创建其实例对象UMyObject* MyObject NewObject();创建Actor派生类对象生成AActor派生类对象不要用NewObject或new而要用UWorld::SpawnActor()UWorld* World GetWorld();FVector pos(150, 0, 20);AMyActor* MyActor World-SpawnActor(pos,FRotator::ZeroRotator);注意SpawnActor不能放在构造函数但是可以放在其他时期的函数里例如BeginPlay()、Tick()...否则可能会编译后就crash。创建Component派生类对象为Actor创建组件可使用UObject::CreateDefaultSubobject()模板函数UCameraComponent* Camera CreateDefaultSubobject(TEXT(Camera0));CreateDefaultSubobject必须写在Actor的无参构造函数中否则crash。CreateDefaultSubobject中的TEXT或者FName参数在同一个Actor中不能重复否则crash。一定要添加RegisterComponent()否则编辑器不会显示。创建蓝图对象蓝图由于本质是一种脚本不是直接的C类因此往往需要借助动态类型来生成蓝图对象。所有的加载资源并创建到场景中的方式都离不开SpawnActor这一句代码。1.通过已确定的父类来生成蓝图对象AMyActor* spawnActor GetWorld()-SpawnActor(AMyActor::StaticClass());如果你的蓝图派生于某个C类,那么可以直接访问该类的StaticClass()并用于SpawnActor来创建蓝图对象。2.通过UClass生成蓝图对象UClass* BPClass LoadClass(nullptr, TEXT(/Game/Blueprints/MyBP)); //TSubclassOf同理AActor* spawnActor  GetWorld()-SpawnActor(BPClass);3.通过UObject生成蓝图对象若得到UObject则需要先转换成UBlueprint再通过GeneratedClass获取UClass来生成蓝图对象FStringAssetReference asset  Blueprint/Game/BluePrint/TestObj.TestObj;UObject* itemObj  asset.ResolveObject();UBlueprint* gen  Cast(itemObj);if (gen ! NULL){AActor* spawnActor  GetWorld()-SpawnActor(gen-GeneratedClass);}参考
http://www.zqtcl.cn/news/73425/

相关文章:

  • 同城分类网站建设公众号平台注册
  • 视频收费网站怎么做山东城市建设职业学院教务网网站
  • wordpress单位内网做网站网站开发html工具
  • 河南艾特网站建设免费编程网站
  • 石狮网站设计公司网站建设的费用需求
  • 石家庄市和城乡建设局网站深圳住房和建设厅网站首页
  • 太原网站制作维护网易云网站开发
  • 仿美团版网站开发制作兰州网站优化哪家好
  • 汕头如何建设网站设计网站怎样做谷歌推广
  • 成立公司需要哪些资料深圳营销型网站建设优化
  • 莱芜高端网站建设价格wordpress 最大上传
  • 宁波市高等级公路建设指挥部网站宁波网络推广seo软件
  • 网站规划与建设ppt模板wordpress简历模板
  • 网站建设动画代码动画网站制作
  • sqlite 做网站数据库软件外包专业就业方向
  • 苏州手机网站制作wordpress超详细教程
  • 常州钟楼建设局网站新乡+网站建设
  • 西宁市住房和城乡建设局网站专业团队文案
  • 排版设计的网站ui培训中心
  • 形容网站开发的词国外有什么优秀的网站推荐
  • 中企动力建设的网站如何修改无为县住房建设局网站
  • 个人备案网站建设方案书wordpress办公插件
  • 自助建站平台源码山西住房与建设部网站
  • 南磨房网站建设公司wordpress插件上传
  • 网站建设有哪些需求linux下用python做网站
  • 分类网站建设方案网站制作例子
  • 小学学校网站建设计划苏州园区已经烂掉了
  • o2o网站设计河北专业网站建设公司推荐
  • 微交易网站建设WordPress电子书主题模板
  • 网站建设新闻 常识滨州网站建设phpi