资源系统(NAssetManager)
资源系统允许您查找和访问资源等对象。
NAssetManager
接口介绍:
| 接口名称 | 返回值 | 接口作用 |
|---|---|---|
| LoadPrefabFromFile | NActorList | 从文件加载预制体 |
| LoadPrefabFromString | NActorList | 从字符串加载预制体 |
| SaveObjectToFile | bool | 保存对象至文件 |
| SaveObjectsToFile | bool | 保存多个对象至文件 |
| SaveObjectToString | std::string | 保存对象为字符串 |
| SaveObjectsToString | std::string | 保存多个对象为字符串 |
| LoadObjectFromFile | T* | 从文件加载对象 |
| LoadObjectsFromFile | T* | 从文件加载多个对象 |
| LoadObjectFromString | T* | 从字符串加载对象 |
| LoadObjectsFromString | T* | 从字符串加载多个对象 |
接口示例:
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
接口介绍:
| 接口名称 | 返回值 | 接口作用 |
|---|---|---|
| LoadTextureFromData | NTexturePtr | 从数据加载纹理 |
| LoadTextureFromFile | NTexturePtr | 从文件加载纹理 |
| UnLoad | void | 卸载加载的纹理 |
| LoadTexture | NTexturePtr | 加载纹理 |
| GetTexture | NTexturePtr | 通过名称获取纹理 |
| LoadTextureFromMemory | NTexturePtr | 从内存数据加载纹理 |
| Create | NTexturePtr | 创建纹理 |
| CreateTexture2D | NTexturePtr | 创建2D纹理 |
| CreateTextureCube | NTextureCubePtr | 创建立方体贴图 |
| CreateExternalTexture | NTexturePtr | 创建外部纹理 |
| LoadTextureFromFileSync | NTexturePtr | 从文件异步加载纹理 |
| LoadTextureFromDataSync | NTexturePtr | 从数据异步加载纹理 |
| UnloadAllTextures | void | 卸载所有加载的纹理 |
| UnloadModelAssets | void | 卸载所有加载的模型 |
| IsTextureExist | bool | 判断纹理是否存在 |
| CreateMaterial | NMaterialPtr | 创建材质 |
| LoadMaterial | NMaterialPtr | 加载材质 |
| CreateRenderTexture | NRenderTexturePtr | 创建RT |
| DestroyRenderTexture | void | 销毁RT |
| CancelResourceLoadAll | void | 取消所有文件加载 |
| DestroyTexture | void | 销毁纹理 |
| DumpResourceInfo | std::string | 装载资源信息 |
| GetTempRenderTexture | NRenderTexturePtr | 获取临时RT |
| RelaseTempRenderTexture | void | 释放临时RT |
| CreateModelResource | NModelResourcePtr | 创建模型加载资源 |
| GetModelResource | NModelResourcePtr | 获取模型加载资源 |
| DestroyModelResource | void | 销毁模型加载资源 |
| CreateMesh | NSharedPtr<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
资源内存数据用于将加载出的纹理/模型等数据信息暂时存储,在需要时可以直接从存储的文件中创建模型或纹理等数据。
接口介绍:
| 接口名称 | 返回值 | 接口作用 |
|---|---|---|
| InsertResourceMemoryData | void | 注入文件内存数据 |
| GetResourceMemoryData | NResourceMemoryDataPtr | 获取文件内存数据 |
| ReleaseData | void | 释放数据 |
| SetAutoReleaseData | void | 设置自动释放数据 |
代码示例:
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);
