在运行时加载和卸载场景
加载场景
你可以使用脚本上的 UrlReference<Scene> 属性来指定 Scene 资产,然后通过代码加载它:
public UrlReference<Scene> ChildSceneUrl { get; set; }
//...
var childScene = Content.Load(ChildSceneUrl);
parentScene.Children.Add(childScene);
也可以按名称加载场景。以下代码加载三个场景并将它们添加为子级:
var myChildScene0 = Content.Load<Scene>(url0);
var myChildScene1 = Content.Load<Scene>(url1);
var myChildScene2 = Content.Load<Scene>(url2);
myParentScene.Children.Add(myChildScene0);
myParentScene.Children.Add(myChildScene1);
myChildScene1.Add(myChildScene2);
Note
如果你没有使用 UrlReference,请确保所有想要加载的场景都已作为根资产(root assets)包含在构建中(在资产视图中以蓝色图标表示)。
要将场景包含在构建中,请在资产视图中右键单击该场景资产并选择作为根资产包含在构建中(Include in build as root asset)。
有关将资产包含在构建中的更多信息,请参阅资产编译。
有关场景层次结构的更多信息,请参阅管理场景。
卸载场景
在卸载场景之前,请先将其从场景层次结构中移除:
parentScene.Children.Remove(childScene);
//或者
childScene.Parent = null;
一旦场景资产不再需要,请务必卸载它:
Content.Unload(childScene);
场景流式传输脚本
Stride 还包含一个使用触发器来加载场景的场景流式传输脚本。
Note
场景流式传输脚本仅作为示例提供。它并不总是加载场景的最合适方式。请根据需要随意修改它。
添加场景流式传输脚本
要添加场景流式传输脚本,请在资产视图(默认在底部面板)中点击添加资产(Add asset)并选择脚本(Scripts)> 场景流式传输(Scene streaming)。

Game Studio 会将一个场景流式传输脚本添加到你的项目资产中。
使用场景流式传输脚本
创建一个触发器实体。当它在运行时被触发时,Stride 会加载场景。有关创建触发器的更多信息,请参阅触发器。
实体如何被触发由碰撞体属性定义。更多信息请参阅碰撞体。
创建一个实体,并将其放置在你希望场景加载的位置。
选中该实体,在属性面板(默认在右侧)中点击**添加组件(Add component)**并选择 scene streaming 脚本。

Note
如果场景流式传输脚本没有出现在组件列表中,请重新加载程序集。
Game Studio 会将该脚本作为组件添加到实体上。

在 Url 下,指定你要加载的场景资产。
在 Trigger 下,指定你在第 1 步中创建的实体。
在运行时,当第 1 步中创建的触发器被触发时,Stride 会加载你在第 4 步中指定的场景。
场景流式传输脚本属性

| 属性 | 说明 |
|---|---|
| Pre Load Depth | 场景开始加载的位置(以世界单位计)。例如,若为 2.5,则当玩家进入触发区域 2.5 个单位时,场景开始加载 |
| Load Depth | 如果场景尚未加载完成,游戏在此位置(以世界单位计)冻结以完成场景加载。例如,若为 5,则当玩家进入触发区域 5 个单位时,游戏冻结 |
| Priority | 脚本优先级。更多信息请参阅调度与优先级 |
