mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-03-23 03:04:29 +08:00
- 简化 ISceneRoot 接口,移除路由逻辑和状态管理职责 - 移除路由方法:ReplaceAsync, PushAsync, PopAsync, ClearAsync - 移除场景加载方法:LoadAsync, UnloadAsync - 移除状态属性:Current, Stack, IsTransitioning - 添加容器管理方法:AddScene, RemoveScene - 重构 SceneRouterBase 实现 - PushInternalAsync:使用 ISceneFactory.Create() 创建场景实例,通过 Root.AddScene() 添加到场景树 - PopInternalAsync:使用 Root.RemoveScene() 从场景树移除场景 - 保持正确的生命周期调用顺序 - 职责分离更清晰 - ISceneRoot:仅负责场景树容器管理 - ISceneFactory:负责场景实例创建 - SceneRouterBase:负责路由逻辑和生命周期协调 - 与 UI 路由系统设计保持一致
35 lines
1.4 KiB
C#
35 lines
1.4 KiB
C#
// Copyright (c) 2026 GeWuYou
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
namespace GFramework.Game.Abstractions.scene;
|
|
|
|
/// <summary>
|
|
/// 场景根接口,定义了场景树容器的基本操作。
|
|
/// 职责单一:管理场景节点的添加和移除。
|
|
/// </summary>
|
|
public interface ISceneRoot
|
|
{
|
|
/// <summary>
|
|
/// 向场景树添加场景节点。
|
|
/// 此方法仅负责将场景添加到场景树中,不涉及场景的加载逻辑。
|
|
/// </summary>
|
|
/// <param name="scene">要添加的场景行为实例。</param>
|
|
void AddScene(ISceneBehavior scene);
|
|
|
|
/// <summary>
|
|
/// 从场景树移除场景节点。
|
|
/// 此方法仅负责从场景树中移除场景,不涉及场景的卸载逻辑。
|
|
/// </summary>
|
|
/// <param name="scene">要移除的场景行为实例。</param>
|
|
void RemoveScene(ISceneBehavior scene);
|
|
} |