Skip to content

资源系统(NAssetManager)

资源系统允许您查找和访问资源等对象。

NAssetManager

接口介绍:

接口名称返回值接口作用
LoadPrefabFromFileNActorList从文件加载预制体
LoadPrefabFromStringNActorList从字符串加载预制体
SaveObjectToFilebool保存对象至文件
SaveObjectsToFilebool保存多个对象至文件
SaveObjectToStringstd::string保存对象为字符串
SaveObjectsToStringstd::string保存多个对象为字符串
LoadObjectFromFileT*从文件加载对象
LoadObjectsFromFileT*从文件加载多个对象
LoadObjectFromStringT*从字符串加载对象
LoadObjectsFromStringT*从字符串加载多个对象

接口示例:

cpp
//使用代码加载预制体并添加在场景中:
void GameManager::CreatePlayer()
{
    NActorList _nActorList = NAssetManager::LoadPrefabFromFile("Assets/Prefabs/NewPrefab.prefab");
    NActorPtr _nActor = _nActorList[0];
    NActorManager::AddActors(_nActorList);
    PlayerCtrlRef player = _nActor->GetComponent<PlayerCtrl>();
    player->InitPlayer();
    auto mainCamera = NActorManager::GetActor("MainCamera");
    mainCamera->SetParent(_nActor);
    mainCamera->SetLocalPosition(Vector3(0, 0, -23));
}

NResource

接口介绍:

接口名称返回值接口作用
LoadTextureFromDataNTexturePtr从数据加载纹理
LoadTextureFromFileNTexturePtr从文件加载纹理
UnLoadvoid卸载加载的纹理
LoadTextureNTexturePtr加载纹理
GetTextureNTexturePtr通过名称获取纹理
LoadTextureFromMemoryNTexturePtr从内存数据加载纹理
CreateNTexturePtr创建纹理
CreateTexture2DNTexturePtr创建2D纹理
CreateTextureCubeNTextureCubePtr创建立方体贴图
CreateExternalTextureNTexturePtr创建外部纹理
LoadTextureFromFileSyncNTexturePtr从文件异步加载纹理
LoadTextureFromDataSyncNTexturePtr从数据异步加载纹理
UnloadAllTexturesvoid卸载所有加载的纹理
UnloadModelAssetsvoid卸载所有加载的模型
IsTextureExistbool判断纹理是否存在
CreateMaterialNMaterialPtr创建材质
LoadMaterialNMaterialPtr加载材质
CreateRenderTextureNRenderTexturePtr创建RT
DestroyRenderTexturevoid销毁RT
CancelResourceLoadAllvoid取消所有文件加载
DestroyTexturevoid销毁纹理
DumpResourceInfostd::string装载资源信息
GetTempRenderTextureNRenderTexturePtr获取临时RT
RelaseTempRenderTexturevoid释放临时RT
CreateModelResourceNModelResourcePtr创建模型加载资源
GetModelResourceNModelResourcePtr获取模型加载资源
DestroyModelResourcevoid销毁模型加载资源
CreateMeshNSharedPtr<T>创建模型

接口示例:

cpp
	//使用代码穿件纹理和材质
	mRayDefaultMat = NResources::CreateMaterial("RayDefaultMat", EMaterialTemplate::MT_Unlit);
	BlendingState state = mRayDefaultMat->GetBlendingState();
	state.enableBlending = true;
	mRayDefaultMat->SetBlendingState(state);
	DepthState depthState = mRayDefaultMat->GetDepthState();
	depthState.depthTest = true;
	depthState.depthWrite = true;
	mRayDefaultMat->SetDepthState(depthState);
	RasterState rasterState = mRayDefaultMat->GetRasterState();
	rasterState.cullMode = ECullMode::CM_Null;
	mRayDefaultMat->SetRasterState(rasterState);
	auto rayDefaultTexture =NResources::LoadTextureFromFile(
	"RayDefaultTexture","Assets/Textures/rayDefault.png");
	mRayDefaultMat->SetMainTexture(rayDefaultTexture);
	mRayDefaultMat->SetMainColor(Color(0.6, 0.6, 0.6, 1));

NResourceMemoryData

资源内存数据用于将加载出的纹理/模型等数据信息暂时存储,在需要时可以直接从存储的文件中创建模型或纹理等数据。

接口介绍:

接口名称返回值接口作用
InsertResourceMemoryDatavoid注入文件内存数据
GetResourceMemoryDataNResourceMemoryDataPtr获取文件内存数据
ReleaseDatavoid释放数据
SetAutoReleaseDatavoid设置自动释放数据

代码示例:

cpp
	//创建内存资源文件并加载图片数据
	auto PNG =NActorManager::GetActor("Image_2")->GetImageView();
	NResourceMemoryDataPtr memoryData = new NResourceMemoryData();
	NFile a;
	char* pBuffer = new char[20000000];
	auto adfas = a.Open("C:/Users/Hello/Desktop/20230223090057.jpg", OpenMode::OM_RB);
	int asv = a.ReadBuffer(pBuffer, 1, 20000000);
	if (asv != 0)
	{
		memoryData->m_DataSize = 20000000;
		memoryData->m_TextureSuffix = ETextureSuffix::ETextureSuffix_JPG;
		memoryData->m_Data = pBuffer;
	}
	PNG->LoadFromMemoryData("Test123", ETextureSuffix::ETextureSuffix_JPG, memoryData);