初始化
This commit is contained in:
15
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Panel/Base/Window/BaseWindow.cs
vendored
Normal file
15
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Panel/Base/Window/BaseWindow.cs
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
using Cysharp.Threading.Tasks;
|
||||
|
||||
namespace YIUIFramework
|
||||
{
|
||||
public abstract partial class BaseWindow : UIBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 窗口选项
|
||||
/// 最后由Panel View重写
|
||||
/// 实现各种配置
|
||||
/// 如非必要 所有属性判断可以直接去HasFlag分类中获取 不要直接判断这个
|
||||
/// </summary>
|
||||
public virtual EWindowOption WindowOption => EWindowOption.None;
|
||||
}
|
||||
}
|
||||
3
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Panel/Base/Window/BaseWindow.cs.meta
vendored
Normal file
3
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Panel/Base/Window/BaseWindow.cs.meta
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9f14db4037054efbb1e410c94f6f70e7
|
||||
timeCreated: 1683798125
|
||||
74
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Panel/Base/Window/BaseWindow_Anim.cs
vendored
Normal file
74
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Panel/Base/Window/BaseWindow_Anim.cs
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
using Cysharp.Threading.Tasks;
|
||||
|
||||
namespace YIUIFramework
|
||||
{
|
||||
//动画
|
||||
public abstract partial class BaseWindow
|
||||
{
|
||||
private bool m_FirstOpenTween;
|
||||
|
||||
internal async UniTask InternalOnWindowOpenTween(bool tween = true)
|
||||
{
|
||||
OnOpenTweenStart();
|
||||
|
||||
if (tween && !WindowBanRepetitionOpenTween || !m_FirstOpenTween)
|
||||
{
|
||||
m_FirstOpenTween = true;
|
||||
|
||||
if (WindowBanAwaitOpenTween)
|
||||
{
|
||||
SealedOnWindowOpenTween().Forget();
|
||||
}
|
||||
else
|
||||
{
|
||||
await SealedOnWindowOpenTween();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
OnOpenTweenEnd();
|
||||
}
|
||||
}
|
||||
|
||||
private bool m_FirstCloseTween;
|
||||
|
||||
internal async UniTask InternalOnWindowCloseTween(bool tween = true)
|
||||
{
|
||||
OnCloseTweenStart();
|
||||
|
||||
if (tween && !WindowBanRepetitionCloseTween || !m_FirstCloseTween)
|
||||
{
|
||||
m_FirstCloseTween = true;
|
||||
|
||||
if (WindowBanAwaitCloseTween)
|
||||
{
|
||||
SealedOnWindowCloseTween().Forget();
|
||||
}
|
||||
else
|
||||
{
|
||||
await SealedOnWindowCloseTween();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
OnCloseTweenEnd();
|
||||
}
|
||||
}
|
||||
|
||||
//由子类实现密封Async 调用End
|
||||
protected abstract UniTask SealedOnWindowOpenTween();
|
||||
|
||||
//任何UI可重写打开与关闭动画
|
||||
protected abstract UniTask OnOpenTween();
|
||||
|
||||
//有可能没有动画 也有可能动画被跳过 反正无论如何都会有动画结束回调
|
||||
protected abstract void OnOpenTweenStart();
|
||||
protected abstract void OnOpenTweenEnd();
|
||||
|
||||
protected abstract UniTask SealedOnWindowCloseTween();
|
||||
protected abstract UniTask OnCloseTween();
|
||||
|
||||
protected abstract void OnCloseTweenStart();
|
||||
protected abstract void OnCloseTweenEnd();
|
||||
}
|
||||
}
|
||||
3
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Panel/Base/Window/BaseWindow_Anim.cs.meta
vendored
Normal file
3
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Panel/Base/Window/BaseWindow_Anim.cs.meta
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a2c237ed64024a4db33268ab930c344d
|
||||
timeCreated: 1689324285
|
||||
62
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Panel/Base/Window/BaseWindow_HasFlag.cs
vendored
Normal file
62
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Panel/Base/Window/BaseWindow_HasFlag.cs
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
namespace YIUIFramework
|
||||
{
|
||||
//窗口选项值 根据需求以下都可以重写 可动态改变值
|
||||
//所有窗口选项的属性
|
||||
//可快捷操作
|
||||
//亦可重写后根据需求动态调整
|
||||
public abstract partial class BaseWindow
|
||||
{
|
||||
/// <summary>
|
||||
/// 当打开的参数不一致时
|
||||
/// 是否可以使用基础Open
|
||||
/// 如果允许 别人调用open了一个不存在的Open参数时
|
||||
/// 也可以使用默认的open打开界面 则你可以改为true
|
||||
/// </summary>
|
||||
public virtual bool WindowCanUseBaseOpen => WindowOption.HasFlag(EWindowOption.CanUseBaseOpen);
|
||||
|
||||
/// <summary>
|
||||
/// 禁止使用ParamOpen
|
||||
/// </summary>
|
||||
public virtual bool WindowBanParamOpen => WindowOption.HasFlag(EWindowOption.BanParamOpen);
|
||||
|
||||
/// <summary>
|
||||
/// 我有其他IOpen时 允许用open
|
||||
/// 默认fasle 我有其他iopen接口时 是不允许使用open的
|
||||
/// </summary>
|
||||
public virtual bool WindowHaveIOpenAllowOpen => WindowOption.HasFlag(EWindowOption.HaveIOpenAllowOpen);
|
||||
|
||||
//先开
|
||||
public virtual bool WindowFirstOpen => WindowOption.HasFlag(EWindowOption.FirstOpen);
|
||||
|
||||
//后关
|
||||
public virtual bool WindowLastClose => WindowOption.HasFlag(EWindowOption.LastClose);
|
||||
|
||||
//禁止动画
|
||||
public virtual bool WindowBanTween => WindowOption.HasFlag(EWindowOption.BanTween);
|
||||
|
||||
//打开动画不可重复播放
|
||||
public virtual bool WindowBanRepetitionOpenTween => WindowOption.HasFlag(EWindowOption.BanRepetitionOpenTween);
|
||||
|
||||
//关闭动画不可重复播放
|
||||
public virtual bool WindowBanRepetitionCloseTween =>
|
||||
WindowOption.HasFlag(EWindowOption.BanRepetitionCloseTween);
|
||||
|
||||
//不等待打开动画
|
||||
public virtual bool WindowBanAwaitOpenTween => WindowOption.HasFlag(EWindowOption.BanAwaitOpenTween);
|
||||
|
||||
//不等待关闭动画
|
||||
public virtual bool WindowBanAwaitCloseTween => WindowOption.HasFlag(EWindowOption.BanAwaitCloseTween);
|
||||
|
||||
//我关闭时跳过其他的打开动画
|
||||
public virtual bool WindowSkipOtherOpenTween => WindowOption.HasFlag(EWindowOption.SkipOtherOpenTween);
|
||||
|
||||
//我打开时跳过其他的关闭动画
|
||||
public virtual bool WindowSkipOtherCloseTween => WindowOption.HasFlag(EWindowOption.SkipOtherCloseTween);
|
||||
|
||||
//Home时 跳过我自己的打开动画
|
||||
public virtual bool WindowSkipHomeOpenTween => WindowOption.HasFlag(EWindowOption.SkipHomeOpenTween);
|
||||
|
||||
//播放动画时 可以操作 默认播放动画的时候是不能操作UI的 不然容易出问题
|
||||
public virtual bool WindowAllowOptionByTween => WindowOption.HasFlag(EWindowOption.AllowOptionByTween);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 70c82cb8ac4c4c218f74929ef32f8a8b
|
||||
timeCreated: 1689324378
|
||||
49
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Panel/Base/Window/BaseWindow_OpenClose.cs
vendored
Normal file
49
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Panel/Base/Window/BaseWindow_OpenClose.cs
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
using Cysharp.Threading.Tasks;
|
||||
|
||||
namespace YIUIFramework
|
||||
{
|
||||
//打开关闭
|
||||
public abstract partial class BaseWindow
|
||||
{
|
||||
//打开有3种
|
||||
//1 无参打开 OnOpen
|
||||
//2 ParamVo参数打开 也叫 ParamOpen 打开内部是List<obj>参数 所以可以支持无限长度
|
||||
//3 继承接口IOpen的 也叫 IOpen 打开 最高支持5个泛型参数
|
||||
//前2种都会自带 第三种根据需求自己继承
|
||||
/// <summary>
|
||||
/// 打开UI 无参
|
||||
/// </summary>
|
||||
protected virtual async UniTask<bool> OnOpen()
|
||||
{
|
||||
await UniTask.CompletedTask;
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 打开UI 带参数的
|
||||
/// 需要自己解析参数
|
||||
/// 适合用字符串开启的 参数可字符串配置那种
|
||||
/// 默认会调用onopen
|
||||
/// </summary>
|
||||
protected virtual async UniTask<bool> OnOpen(ParamVo param)
|
||||
{
|
||||
return await OnOpen();
|
||||
}
|
||||
|
||||
internal void OnWindowClose()
|
||||
{
|
||||
OnClose();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// UI被关闭
|
||||
/// 与OnDisable 不同 Disable 只是显影操作不代表被关闭
|
||||
/// 与OnDestroy 不同 Destroy 是摧毁 但是因为有缓存界面的原因 当被缓存时 OnDestroy是不会来的
|
||||
/// 这个时候你想要知道是不是被关闭了就必须通过OnClose
|
||||
/// baseView除外 因为view的关闭就是隐藏 所以 view的 OnDisable = OnClose
|
||||
/// </summary>
|
||||
protected virtual void OnClose()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e8bd7dfdf2474fa2917685125f966d17
|
||||
timeCreated: 1689324334
|
||||
Reference in New Issue
Block a user