66 lines
1.6 KiB
C#
66 lines
1.6 KiB
C#
using System;
|
|
using Cysharp.Threading.Tasks;
|
|
using Unity.Mathematics;
|
|
|
|
namespace BITKit.UX
|
|
{
|
|
/// <summary>
|
|
/// 基本UX服务(GUI管理器),主要通过加载叠加面板实现
|
|
/// </summary>
|
|
public interface IUXService:IDisposable
|
|
{
|
|
public string SettingsPath { get; set; }
|
|
object Root { get; }
|
|
/// <summary>
|
|
/// 初始化
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
UniTask InitializeAsync();
|
|
/// <summary>
|
|
/// 注册面板,加入注册队列
|
|
/// </summary>
|
|
/// <param name="panel">UX面板</param>
|
|
void Register(IUXPanel panel);
|
|
/// <summary>
|
|
/// 注销面板
|
|
/// </summary>
|
|
/// <param name="panel">UX面板</param>
|
|
void UnRegister(IUXPanel panel);
|
|
/// <summary>
|
|
/// 进入面板
|
|
/// </summary>
|
|
/// <typeparam name="T">面板类型</typeparam>
|
|
void Entry<T>() where T : IUXPanel;
|
|
/// <summary>
|
|
/// 返回上一个面板
|
|
/// </summary>
|
|
void Return();
|
|
/// <summary>
|
|
/// 进入面板
|
|
/// </summary>
|
|
/// <param name="panel">已实例化的面板</param>
|
|
void Entry(IUXPanel panel);
|
|
/// <summary>
|
|
/// 进入面板
|
|
/// </summary>
|
|
/// <param name="panelName">面板名称</param>
|
|
void Entry(string panelName);
|
|
/// <summary>
|
|
/// 当前面板
|
|
/// </summary>
|
|
IUXPanel CurrentPanel { get; }
|
|
/// <summary>
|
|
/// 面板改变回调
|
|
/// </summary>
|
|
public event Action<IUXPanel, IUXPanel> OnPanelChanged;
|
|
/// <summary>
|
|
/// 获取可交互的元素
|
|
/// </summary>
|
|
/// <param name="position"></param>
|
|
/// <param name="obj"></param>
|
|
/// <returns></returns>
|
|
public bool TryPick(float2 position, out object obj);
|
|
}
|
|
}
|
|
|