This commit is contained in:
CortexCore 2024-06-14 16:16:13 +08:00
parent ca93bd2c56
commit dfa249677f
7 changed files with 40 additions and 41 deletions

View File

@ -8,7 +8,7 @@ namespace BITKit
{ {
public static class BIT4Log public static class BIT4Log
{ {
#if UNITY_EDITOR && UNITY_64 #if UNITY_EDITOR && UNITY_5_3_OR_NEWER
[RuntimeInitializeOnLoadMethod] [RuntimeInitializeOnLoadMethod]
private static void Reload() private static void Reload()
{ {

View File

@ -242,7 +242,7 @@ namespace BITKit.Net
else else
{ {
returnWriter.Write(false); returnWriter.Write(false);
returnWriter.Write("未找到对应的Rpc方法"); returnWriter.Write($"未找到对应的Rpc方法:{path}");
} }
} }
else else

View File

@ -66,6 +66,10 @@ namespace BITKit.Net
if (server.IsActive() is false || ManualTick) return; if (server.IsActive() is false || ManualTick) return;
server.Tick(); server.Tick();
} }
catch (SocketException)
{
//丢失链接,有用户断开连接,通常是正常现象
}
catch (Exception exception) catch (Exception exception)
{ {
BIT4Log.LogException(exception); BIT4Log.LogException(exception);
@ -254,7 +258,7 @@ namespace BITKit.Net
} }
else else
{ {
throw new Exception("未找到对应的Rpc方法"); throw new Exception($"未找到对应的Rpc方法:{path}");
} }
} }
@ -262,7 +266,8 @@ namespace BITKit.Net
{ {
var commandObj = BITBinary.Read(reader) var commandObj = BITBinary.Read(reader)
.As<object[]>()[0]; .As<object[]>()[0];
if (_rpc.TryGetValue(commandObj.GetType()!.FullName!, out var func)) var funcName = commandObj.GetType()!.FullName!;
if (_rpc.TryGetValue(funcName, out var func))
{ {
var value = await func.As<Func<object, UniTask<object>>>().Invoke(commandObj); var value = await func.As<Func<object, UniTask<object>>>().Invoke(commandObj);
returnWriter.Write(true); returnWriter.Write(true);
@ -270,7 +275,7 @@ namespace BITKit.Net
} }
else else
{ {
throw new Exception("未找到对应的Rpc方法"); throw new Exception($"未找到对应的Rpc方法:{funcName}");
} }
} }
{ {
@ -471,7 +476,10 @@ namespace BITKit.Net
.Write((byte)commandType) .Write((byte)commandType)
.WriteObject(values) .WriteObject(values)
.Build(); .Build();
server.Send(id,bytes, KcpChannel.Reliable); if (server.connections.ContainsKey(id))
{
server.Send(id,bytes, KcpChannel.Reliable);
}
} }
} }

View File

@ -166,6 +166,8 @@ namespace kcp2k
// the other end closing the connection is not an 'error'. // the other end closing the connection is not an 'error'.
// but connections should never just end silently. // but connections should never just end silently.
// at least log a message for easier debugging. // at least log a message for easier debugging.
//sure I go next somewhere record it
Log.Info($"KcpServer: ReceiveFrom failed: {e}"); Log.Info($"KcpServer: ReceiveFrom failed: {e}");
} }

View File

@ -107,6 +107,8 @@ namespace BITKit.UX
private Button _cancelButton; private Button _cancelButton;
private void Start() private void Start()
{ {
destroyCancellationToken.Register(Dispose);
DI.Register<IUXDialogue,UnityDialogue>(); DI.Register<IUXDialogue,UnityDialogue>();
UXUtils.Inject(this); UXUtils.Inject(this);
@ -114,8 +116,14 @@ namespace BITKit.UX
Close(); Close();
} }
private void Dispose()
{
}
internal void PrintAlertMessage(AlertMessage message) internal void PrintAlertMessage(AlertMessage message)
{ {
if(destroyCancellationToken.IsCancellationRequested)return;
document.rootVisualElement.SetActive(true); document.rootVisualElement.SetActive(true);
_titleLabel.text = message.title; _titleLabel.text = message.title;
_contextLabel.text = message.message; _contextLabel.text = message.message;

View File

@ -54,6 +54,11 @@ namespace BITKit.UX
/// </summary> /// </summary>
private static readonly Stack<IUXPanel> EntryQueue = new(); private static readonly Stack<IUXPanel> EntryQueue = new();
/// <summary>
/// 返回面板缓冲区
/// </summary>
private static readonly DoubleBuffer<IUXPanel> ReturnBuffer = new();
/// <summary> /// <summary>
/// 已启用面板 /// 已启用面板
/// </summary> /// </summary>
@ -74,12 +79,11 @@ namespace BITKit.UX
{ {
if (History.TryPop(out var returnPanel)) if (History.TryPop(out var returnPanel))
{ {
Entry(returnPanel); ReturnBuffer.Release(returnPanel);
} }
} }
public static void Entry(IUXPanel panel) => EntryQueue.Push(panel); public static void Entry(IUXPanel panel) => EntryQueue.Push(panel);
public static void Entry(string panelName) => EntryQueue.Push(Panels[panelName]); public static void Entry(string panelName) => EntryQueue.Push(Panels[panelName]);
[SerializeReference, SubclassSelector] private IUXPanel initialPanel; [SerializeReference, SubclassSelector] private IUXPanel initialPanel;
@ -103,7 +107,7 @@ namespace BITKit.UX
} }
private static void OnExit(IUXPanel obj) private static void OnExit(IUXPanel obj)
{ {
History.Push(obj); //History.Push(obj);
} }
private static void OnEntry(IUXPanel obj) private static void OnEntry(IUXPanel obj)
{ {
@ -125,8 +129,16 @@ namespace BITKit.UX
Panels.Remove(result.Index); Panels.Remove(result.Index);
} }
if (ReturnBuffer.TryGetRelease(out var returnPanel))
{
EntryGroup.Entry(x=>x.Index==returnPanel.Index);
BITAppForUnity.AllowCursor.SetElements(this, returnPanel.AllowCursor);
BITInputSystem.AllowInput.SetElements(this, returnPanel.AllowInput);
}
if (EntryQueue.TryPop(out var nextPanel)) if (EntryQueue.TryPop(out var nextPanel))
{ {
History.Push(CurrentPanel);
EntryGroup.Entry(x=>x.Index==nextPanel.Index); EntryGroup.Entry(x=>x.Index==nextPanel.Index);
BITAppForUnity.AllowCursor.SetElements(this, nextPanel.AllowCursor); BITAppForUnity.AllowCursor.SetElements(this, nextPanel.AllowCursor);
BITInputSystem.AllowInput.SetElements(this, nextPanel.AllowInput); BITInputSystem.AllowInput.SetElements(this, nextPanel.AllowInput);
@ -136,38 +148,6 @@ namespace BITKit.UX
{ {
currentPanel.OnUpdate(Time.deltaTime); currentPanel.OnUpdate(Time.deltaTime);
}; };
// if (initialized is false && initialPanel is not null)
// {
// initialized = true;
// Entry(initialPanel);
// }
//
// if (!EntryQueue.TryPop(out var next) || next is null) return;
//
// if (Panels.ContainsKey(next.Index) is false) return;
//
// while (EntryCompletedPanels.TryPop(out var entryCompletedPanel))
// {
// entryCompletedPanel?.Exit();
// }
//
// try
// {
// next.Entry();
// }
// catch (Exception e)
// {
// Debug.LogWarning(next.Index);
// Debug.LogException(e);
// }
//
// BITAppForUnity.AllowCursor.SetElements(this, next.AllowCursor);
// BITInputSystem.AllowInput.SetElements(this, next.AllowInput);
//
// EntryCompletedPanels.Push(next);
// History.Push(next);
} }
void IUXService.Register(IUXPanel panel) => Register(panel); void IUXService.Register(IUXPanel panel) => Register(panel);

View File

@ -8,6 +8,7 @@ using UnityEngine.UIElements;
namespace BITKit.UX namespace BITKit.UX
{ {
[AttributeUsage(AttributeTargets.Field|AttributeTargets.Property)]
public class UXBindPathAttribute : Attribute public class UXBindPathAttribute : Attribute
{ {
public string Path; public string Path;