背景
在产品开发过程中调试数据是必不可少的过程之一,那么涉及到频繁的设置数据、运行unity等一系列繁琐的操作,有没有更好的办法呢?答案是肯定有更好的办法。这里我所用到的是unity自带的OnGUI相关的工具可以实时的更改数据调试。
代码
using System;
using System.Collections;
using System.Collections.Generic;
using RapidGUI;
using UnityEngine;
public class DebugTool : MonoBehaviour
{
private WindowLaunchers _debugWindows;
private Rect _mainRect = new Rect(10, 10, 600, 800);
private Vector2 _scrollRect;
private bool isShow = false;
private Vector2 _scrollViews = Vector2.zero;
private void Start()
{
_debugWindows = new WindowLaunchers() { isWindow = false};
InitWondow();
}
private float _value = 0;
private void InitWondow()
{
_debugWindows.Add("调试slider", () =>
{
_value = RGUI.Slider(_value, 0, 1, "slider的数值");
});
_debugWindows.Add("调试button", () =>
{
if (GUILayout.Button("button1")) {
Debug.LogError("this is button1");
}
if (GUILayout.Button("button2")) {
Debug.LogError("this is button2");
}
});
_debugWindows.Add("调试text", () =>
{
RGUI.Field(0, "文本显示");
});
_debugWindows.Add("调试ScrollView", () =>
{
_scrollViews =
GUILayout.BeginScrollView(_scrollViews, GUILayout.Width(1200), GUILayout.Height(600));
foreach (var item in tasks) {
float progress = 0f;
if (item.Status != DownLoadTaskStatus.Downloading &&
item.Status != DownLoadTaskStatus.RemoteDownloading) {
progress = 0f;
}
else if (item.Status == DownLoadTaskStatus.Downloading) {
progress = (float)item.DownloadSize / (float)item.TotalSize;
}
else {
progress = (float)item.RemoteDownloadSize / (float)item.TotalSize;
}
RGUI.Slider(progress, 0f, 1.0f,
$"{item.Desc} [状态:{item.Status}] 速度:{StringUtils.FormatSize(item.Speed)}/秒");
}
GUILayout.EndScrollView();
});
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.F1))
{
isShow = !isShow;
}
}
private void OnGUI()
{
if (!isShow) return;
_mainRect = GUI.Window(0, _mainRect, (id) =>
{
_scrollRect = GUILayout.BeginScrollView(_scrollRect, false, true, GUILayout.Width(600),
GUILayout.Height(800));
GUILayout.BeginVertical(GUILayout.Width(600), GUILayout.Height(800));
_debugWindows.DoGUI();
GUILayout.Space(20);
GUILayout.EndVertical();
GUILayout.EndScrollView();
},"调试窗口");
}
}