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

网站建设设计公司哪家好火车头wordpress发布模块4.9

网站建设设计公司哪家好,火车头wordpress发布模块4.9,温州做微网站,深圳做夜场做网站一、前言 之前提到的静态和动态加载都是同步的加载,同时其中的引用基本都是硬引用。如果资源比较大的话会出现卡顿的现象,下面将介绍一种异步加载的方式。同时,还将介绍一种区别与之前的Load的方法。 在说明同步和异步加载之前需要先讲一下虚…

一、前言

        之前提到的静态和动态加载都是同步的加载,同时其中的引用基本都是硬引用。如果资源比较大的话会出现卡顿的现象,下面将介绍一种异步加载的方式。同时,还将介绍一种区别与之前的Load的方法。

        在说明同步和异步加载之前需要先讲一下虚幻引擎的引用路径的问题,虚幻中的资源和类的引用包含软引用和硬引用,硬引用即对象A引用对象B,那么加载对象A的时候会自动加载对象B。软引用,即对象A通过间接机制(一般是字符串形式的路径)来引用对象B,不会在A加载时加载B。静态和动态加载

二、实现

2.1、硬性引用

        比如一个类A中定义一个变量为“输入映射”,在后续的蓝图中添加了,如图2.1.1所示,在细节

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "MyInput")class UInputMappingContext* MyMappingContext;
图2.1.1

面板中添加了该变量的具体资源,那么在该类A在加载的同时会自动加载该“输入映射”添加的资源到内存中。

还有一种硬引用的方式,这个函数通常在构造函数中使用。

static ConstructorHelpers::FClassFinder<UUserWidget>tempUICalss(TEXT("/Script/UMGEditor.WidgetBlueprint'/Game/BluePrint/UI3D.UI3D_C'"));
2.2、软引用路径

        而软引用则不同,如下多是在A类中定义以下几个软引用,如图2.2.1所示可以在类A的细节面

	/// <summary>/// class的是蓝图类,Object的可以是非类的资源如图片/// </summary>UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Path")FSoftObjectPath AssetObjectPath;UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Path")FSoftClassPath AssetClassPath;UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Path")TSoftObjectPtr<AActor> AssetObjectPtr;//场景中的物体UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Path")TSoftObjectPtr<AActor> AssetClassPtr;//场景中的物体

板中看到这定义的四个路径,这里的路径绑定的资源不再会A加载的同时加载到内存中,而要通过

图2.2.1

后续的代码再加载到内存中。这就是软引用和硬引用的区别。

2.3、同步加载

        通过复制引用资源的路径,然后添加到代码的的路径中,同步加载在资源比较大的情况下会让主程序都出现卡顿的情况。

	//同步加载FSoftObjectPath tempPath2 = TEXT("/Script/Engine.Texture2D'/Game/StarterContent/Textures/T_Wood_Oak_D.T_Wood_Oak_D'");TSharedPtr<FStreamableHandle> SynStreamhandle = UAssetManager::GetStreamableManager().RequestSyncLoad(tempPath2);if (SynStreamhandle){UTexture2D* tempTex2 = Cast<UTexture2D>(SynStreamhandle->GetLoadedAsset());if (tempTex2){GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Green, FString::Printf(TEXT("TexName:%s"), *tempTex2->GetName()));}}
2.4、异步加载

        异步加载就是在执行的时候会开启另外一个线程去后台加载资源,因此如果还是通过以下的方式去获取资源可能会不同步得到响应的结果。

	FSoftObjectPath tempPath1 = TEXT("/Script/Engine.Texture2D'/Game/StarterContent/Textures/T_Burst_M.T_Burst_M'");//异步加载1TSharedPtr<FStreamableHandle>AsyStreamhandle = UAssetManager::GetStreamableManager().RequestAsyncLoad(tempPath1);if (AsyStreamhandle){UTexture2D* tempTex = Cast<UTexture2D>(AsyStreamhandle->GetLoadedAsset());if (tempTex){GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Green, FString::Printf(TEXT("TexName:%s"), *tempTex->GetName()));}}

最好的方式是给异步加载后的结果一个回调函数,如下代码所示,这样在回调函数就可以异步

#include "Engine/StreamableManager.h"TSharedPtr<FStreamableHandle>AsyStreamhandle;AsyStreamhandle = UAssetManager::GetStreamableManager().RequestAsyncLoad(tempPath1, FStreamableDelegate::CreateUObject(this, &AMySoftRefActor::AysLoadCallBack));void AMySoftRefActor::AysLoadCallBack()
{if (AsyStreamhandle){UTexture2D* tempTex = Cast<UTexture2D>(AsyStreamhandle->GetLoadedAsset());if (tempTex){GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Green, FString::Printf(TEXT("TexName:%s"), *tempTex->GetName()));}}
}

处理加载的资源。

三、总结

3.1、软引用和硬引用的区别。

3.2、异步加载最好指定一个回调函数。

http://www.15wanjia.com/news/183211.html

相关文章:

  • 云南省建设厅专家注册网站手动安装wordpress主题
  • 济南资海网站建设公司广州市南沙区基本建设办公室网站
  • 网站系统怎么做的招聘网站开发价格
  • 帝国cms的手机网站百度推广关键词排名在哪看
  • 做外贸需掌握的网站网站建设策划表
  • 摄影公司网站开发上海这边敲墙拆旧做啥网站的比较多
  • 网站建设项目计划书可以绑定域名的免费空间
  • 大兴区网站建设做python题目的网站
  • 做商城网站怎么做网站开发完后如何上线
  • 做淘宝主要看哪些网站有哪些内容企业网站建设 优化
  • 东莞市建设培训中心网站信誉好的盐城网站开发
  • 网站建设开票税率网络营销的应用
  • 政务服务 网站 建设方案广州网络推广公司
  • 美食网站设计目的ps可以做网站动态图
  • seo网站关键词优化多少钱免费建立网站的网站吗
  • 网站建设管理策划书网站开发语言怎么样
  • 卖狗人怎么做网站哪个网站可以免费做电子请柬
  • 织梦网站发布的哪些产品和文章放在a文件可以吗电脑系统优化软件
  • 一个域名绑定多个网站吗济南seo网站推广公司
  • 梅河口城乡建设网站咨询企业网站模板
  • 设计网站的一般过程深圳便宜的网站建设
  • 微信 网站设计模板大型网站建设开发
  • 江苏省建设厅 标准化网站公司网站文化活动备案
  • 佛山网站建设与设计公司设计机构
  • 免费商城网站源码做家居网站设计
  • 电子商务网站建设类型查看网站cms
  • 网站建设发展趋势婚纱影楼网站
  • 经常修改网站的关键词好不好中堂网站建设
  • 如何把网站做的和别人一样吗网络营销论文选题
  • 网站建设含意广西南宁生活网