预制体(NPrefab)
导入预制体
在脚本中使用预制体
在脚本中可以使用预制体加载接口在运行时动态加载预制体文件,相关接口位于NAssetManager.h头文件中
静态接口:
| 接口 | 返回值 | 说明 |
|---|---|---|
| LoadPrefabFromFile | NActorList | 通过预制体文件路径加载预制体,支持同步加载与异步加载,若预制体中包含模型,且加载后需对模型操作,则需要使用异步的方式,因为预制体中的模型均为异步加载,加载后需要调用AddActors接口将Actors加入到场景中 |
| LoadPrefabFromString | NActorList | 通过字符串信息加载预制体,加载后需要调用AddActors接口将Actors加入到场景中 |
| SaveObjectToFile | bool | 将Object类型的对象保存到文件中 |
| SaveObjectsToFile | bool | 将Object类型的对象列表保存到文件中 |
| SaveObjectToString | std::string | 将Object类型的对象保存为字符串 |
| SaveObjectsToString | std::string | 将Object类型的对象列表保存为字符串 |
| LoadObjectFromFile | template <typename T>T* | 从文件中加载Object对象 |
| LoadObjectFromString | template <typename T> std::vector<T*> | 从字符串中加载Object对象 |
使用示例:
cpp
void LoadPrefabFromFileSample()
{
auto loadPrefab =NAssetManager::LoadPrefabFromFile("Assets/Prefabs/test.prefab"
,N_CREATE_ASSET_LOAD_LISTENER_OWNER(this, [=](const std::string& path, NActorList list, int res)
{
NActorManager::AddActors(list);
//如果预制体内包含模型,对模型的操作需要在回调函数中进行,因为预制体中的模型仅支持异步加载
auto modelTest = list.front();
modelTest->SetScale(5.0f);
}));
}
