你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

对象和资源生存期

Azure 远程渲染区分两种类型:对象和资源

对象生存期

对象可以由用户自行创建、修改和销毁。 对象可以自由复制,每个实例可以随时间而改变。 因此,实体组件是对象。

对象的生存期完全受用户控制。 但是它与客户端表示形式的生存期无关。 诸如 EntityComponent 的类包含 Destroy 函数,必须调用该函数才能释放远程渲染主机上的对象。 此外,Entity.Destroy() 将销毁实体、其子级以及该层次结构中的所有组件。

资源生存期

资源的生存期完全由远程渲染主机管理。 资源在内部进行引用计数。 如果不再引用它们,则会将其释放。

大多数资源只能间接创建,通常方法是从文件加载它们。 多次加载同一文件时,Azure 远程渲染将返回相同的引用,而不会再次加载该数据。

很多资源是不可变的,例如网格纹理。 但某些资源是可变的,例如材料。 资源通常是共享的,因此修改资源可能会影响多个对象。 例如,更改材料的颜色将更改引用该材料的网络,进而更改使用该网格的所有对象的颜色。

内置资源

Azure 远程渲染包含一些内置资源,可以在调用 RenderingSession.Connection.LoadXYZAsync() 期间通过在其各自标识符前追加 builtin:// 来加载这些资源。 文档中列出了各个函数的可用内置资源。 例如,天空一章列出了内置的天空纹理。

常规生存期

所有对象和资源的生存期受连接状态影响。 断开连接后,将丢弃所有内容。 当重新连接到相同会话时,场景图将为空,且已清除所有资源。

在实践中,断开连接后,将相同资源加载到会话中的速度通常比第一次快。 这是因为,首次必须从 Azure 存储下载大部分资源,而第二次不必再下载它们,因此节省了大量时间。

后续步骤