update asset bundle debugger

pull/497/head
何冠峰 2025-03-06 12:20:45 +08:00
parent af3fc50188
commit d03bca5512
3 changed files with 43 additions and 22 deletions

View File

@ -167,14 +167,13 @@ namespace YooAsset.Editor
} }
public void Update() public void Update()
{ {
// 每间隔0.5秒绘制一次页面 // 每间隔1秒绘制一次页面
if (EditorApplication.timeSinceStartup - _lastRepaintTime > 0.5f) if (EditorApplication.timeSinceStartup - _lastRepaintTime > 1f)
{ {
_lastRepaintTime = EditorApplication.timeSinceStartup; _lastRepaintTime = EditorApplication.timeSinceStartup;
if (_nextRepaintIndex >= 0) if (_nextRepaintIndex >= 0)
{ {
RepaintFrame(_nextRepaintIndex); RepaintFrame(_nextRepaintIndex);
_lastRepaintIndex = _nextRepaintIndex;
_nextRepaintIndex = -1; _nextRepaintIndex = -1;
} }
} }
@ -192,22 +191,27 @@ namespace YooAsset.Editor
} }
private void OnHandlePlayerMessage(MessageEventArgs args) private void OnHandlePlayerMessage(MessageEventArgs args)
{ {
var debugReport = DebugReport.Deserialize(args.data);
int playerId = args.playerId; int playerId = args.playerId;
var debugReport = DebugReport.Deserialize(args.data);
if (debugReport.DebuggerVersion != RemoteDebuggerDefine.DebuggerVersion)
{
Debug.LogWarning($"Debugger versions are inconsistent : {debugReport.DebuggerVersion} != {RemoteDebuggerDefine.DebuggerVersion}");
return;
}
//Debug.Log($"Handle player {playerId} debug report !"); //Debug.Log($"Handle player {playerId} debug report !");
_currentPlayerSession = GetOrCreatePlayerSession(playerId); _currentPlayerSession = GetOrCreatePlayerSession(playerId);
_currentPlayerSession.AddDebugReport(debugReport); _currentPlayerSession.AddDebugReport(debugReport);
_frameSlider.highValue = _currentPlayerSession.MaxRangeValue; _nextRepaintIndex = _currentPlayerSession.MaxRangeValue;
_frameSlider.value = _currentPlayerSession.MaxRangeValue;
UpdateRepaintIndex(_currentPlayerSession.MaxRangeValue);
} }
private void OnFrameSliderChange(int sliderValue) private void OnFrameSliderChange(int sliderValue)
{ {
if (_currentPlayerSession != null) if (_currentPlayerSession != null)
{ {
_rangeIndex = _currentPlayerSession.ClampRangeIndex(sliderValue); ; _rangeIndex = _currentPlayerSession.ClampRangeIndex(sliderValue); ;
UpdateRepaintIndex(_rangeIndex); RepaintFrame(_rangeIndex);
} }
} }
private void OnFrameLast_clicked() private void OnFrameLast_clicked()
@ -216,7 +220,7 @@ namespace YooAsset.Editor
{ {
_rangeIndex = _currentPlayerSession.ClampRangeIndex(_rangeIndex - 1); _rangeIndex = _currentPlayerSession.ClampRangeIndex(_rangeIndex - 1);
_frameSlider.value = _rangeIndex; _frameSlider.value = _rangeIndex;
UpdateRepaintIndex(_rangeIndex); RepaintFrame(_rangeIndex);
} }
} }
private void OnFrameNext_clicked() private void OnFrameNext_clicked()
@ -225,21 +229,26 @@ namespace YooAsset.Editor
{ {
_rangeIndex = _currentPlayerSession.ClampRangeIndex(_rangeIndex + 1); _rangeIndex = _currentPlayerSession.ClampRangeIndex(_rangeIndex + 1);
_frameSlider.value = _rangeIndex; _frameSlider.value = _rangeIndex;
UpdateRepaintIndex(_rangeIndex); RepaintFrame(_rangeIndex);
} }
} }
private void OnFrameClear_clicked() private void OnFrameClear_clicked()
{ {
_nextRepaintIndex = -1;
_lastRepaintIndex = 0;
_rangeIndex = 0;
_frameSlider.label = $"Frame:";
_frameSlider.value = 0;
_frameSlider.lowValue = 0;
_frameSlider.highValue = 0;
_assetListViewer.ClearView();
_bundleListViewer.ClearView();
_operationListViewer.ClearView();
if (_currentPlayerSession != null) if (_currentPlayerSession != null)
{ {
_frameSlider.label = $"Frame:";
_frameSlider.value = 0;
_frameSlider.lowValue = 0;
_frameSlider.highValue = 0;
_currentPlayerSession.ClearDebugReport(); _currentPlayerSession.ClearDebugReport();
_assetListViewer.ClearView();
_bundleListViewer.ClearView();
_operationListViewer.ClearView();
} }
} }
private void OnRecordToggleValueChange(ChangeEvent<bool> evt) private void OnRecordToggleValueChange(ChangeEvent<bool> evt)
@ -357,17 +366,24 @@ namespace YooAsset.Editor
return newSession; return newSession;
} }
} }
private void UpdateRepaintIndex(int rangeIndex)
{
_nextRepaintIndex = rangeIndex;
}
private void RepaintFrame(int repaintIndex) private void RepaintFrame(int repaintIndex)
{ {
if (_currentPlayerSession == null)
{
_assetListViewer.ClearView();
_bundleListViewer.ClearView();
_operationListViewer.ClearView();
return;
}
var debugReport = _currentPlayerSession.GetDebugReport(repaintIndex); var debugReport = _currentPlayerSession.GetDebugReport(repaintIndex);
if (debugReport != null) if (debugReport != null)
{ {
_lastRepaintIndex = repaintIndex;
_currentReport = debugReport; _currentReport = debugReport;
_frameSlider.label = $"Frame: {debugReport.FrameCount}"; _frameSlider.label = $"Frame: {debugReport.FrameCount}";
_frameSlider.highValue = _currentPlayerSession.MaxRangeValue;
_frameSlider.value = repaintIndex;
if (_viewMode == EViewMode.AssetView) if (_viewMode == EViewMode.AssetView)
{ {

View File

@ -12,6 +12,11 @@ namespace YooAsset
[Serializable] [Serializable]
internal class DebugReport internal class DebugReport
{ {
/// <summary>
/// 调试器版本
/// </summary>
public string DebuggerVersion = RemoteDebuggerDefine.DebuggerVersion;
/// <summary> /// <summary>
/// 游戏帧 /// 游戏帧
/// </summary> /// </summary>

View File

@ -1,10 +1,10 @@
using System; using System;
using System.Text;
namespace YooAsset namespace YooAsset
{ {
internal class RemoteDebuggerDefine internal class RemoteDebuggerDefine
{ {
public const string DebuggerVersion = "2.3.3";
public static readonly Guid kMsgPlayerSendToEditor = new Guid("e34a5702dd353724aa315fb8011f08c3"); public static readonly Guid kMsgPlayerSendToEditor = new Guid("e34a5702dd353724aa315fb8011f08c3");
public static readonly Guid kMsgEditorSendToPlayer = new Guid("4d1926c9df5b052469a1c63448b7609a"); public static readonly Guid kMsgEditorSendToPlayer = new Guid("4d1926c9df5b052469a1c63448b7609a");
} }