当前位置: 首页 > news >正文

关于 UnityEditorWindow

想要使用UnityEditorWindow作为调试窗口吗?

这样做可以很方便的针对游戏中的重要对象做调试。

但是有一个很不方便的地方,OnGUI 的刷新频率不高,或者说需要鼠标点击之后才会重绘,如何解决这一问题?

可以如下操作:

在 Update 函数中调用 Repaint();

using System;
using System.Collections.Generic;
using System.Text;
using cfg.Config;
using InPlayBuff;
using UnityEditor;
using UnityEngine;public class BuffDebugWindow : EditorWindow
{[MenuItem("SoyBean/Debug/Buff")]private static void ShowBuffDebugInspector(){BuffDebugWindow window = EditorWindow.GetWindow<BuffDebugWindow>();window.Show();}private void OnGUI(){if (!Application.isPlaying)return;if (_manager == null){_manager = FindObjectOfType<BuffManager>();}if (_manager == null){return;}List<BuffBase> allBuff = _manager.GetAllBuff();for (int i = 0; i < allBuff.Count; i++){BuffBase buff = allBuff[i];DrawBuffInfo(buff);}}private void DrawBuffInfo(BuffBase buff){StringBuilder builder = new StringBuilder();builder.Append(buff.Owner.name);builder.Append(" | ");builder.Append(buff.Name);builder.Append(" | ");builder.Append(buff.RemainingDuration);builder.Append(" | ");builder.Append(buff.CurrentLevel);builder.Append(" | ");builder.Append(buff.Description);builder.Append(" | ");if (buff is SpecialDataBuff){SpecialDataBuff specialDataBuff = buff as SpecialDataBuff;for (int i = 0; i < specialDataBuff.Data.AttributeNumber1.Count; i++){builder.Append($"效果{i}:");IDToFloat idToFloat = specialDataBuff.Data.AttributeNumber1[i];builder.Append(LubanConfigManager.Instance.Tables.AttributesDataConfig.Get(idToFloat.ID).Name);builder.Append($"{idToFloat.Value} ");}}EditorGUILayout.LabelField(builder.ToString());}private void Update(){if (_manager != null){Repaint();}}private BuffManager _manager;
}

这里是我写的一个 buff 实时查看调试器。

在游戏运行起来的时候此调试器才会工作,这个调试器会实时展示当前游戏中存在的 buff 信息。

相关文章:

  • Java中常见的锁策略
  • 【Linux】详解文件系统以及周边知识
  • 10.windows ubuntu 组装软件:spades,megahit
  • 鸿蒙应用开发-录音保存并播放音频
  • Linux文件(系统)IO(含动静态库的链接操作)
  • 最新2024年增强现实(AR)营销指南(完整版)
  • 全国青少年软件编程(Python)等级考试一级考试真题2023年9月——持续更新.....
  • HTML块级元素和内联元素(头部和布局)
  • centos 7 安装磐维(PanWeiDB)数据库(单机)
  • pandas在循环中多次写入数据到一个excel防止锁定的方法
  • 鸿蒙ARKTS--简易的购物网站
  • 【pytest、playwright】多账号同时操作
  • 基于spark的大数据分析预测地震受灾情况的系统设计
  • 【洛谷】P9241 [蓝桥杯 2023 省 B] 飞机降落
  • OpemMP 同步结构
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 5、React组件事件详解
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • C学习-枚举(九)
  • download使用浅析
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • Linux链接文件
  • Median of Two Sorted Arrays
  • PHP的类修饰符与访问修饰符
  • react-native 安卓真机环境搭建
  • Sass 快速入门教程
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Sequelize 中文文档 v4 - Getting started - 入门
  • Vue全家桶实现一个Web App
  • 给初学者:JavaScript 中数组操作注意点
  • 如何胜任知名企业的商业数据分析师?
  • 数组的操作
  • 在Unity中实现一个简单的消息管理器
  • puppet连载22:define用法
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • (Git) gitignore基础使用
  • (zt)最盛行的警世狂言(爆笑)
  • (二)springcloud实战之config配置中心
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)visual stdio 书签功能介绍
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET/C# 使用反射注册事件
  • .NET关于 跳过SSL中遇到的问题
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • .NET下ASPX编程的几个小问题
  • @31省区市高考时间表来了,祝考试成功
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [2019.3.5]BZOJ1934 [Shoi2007]Vote 善意的投票
  • [elastic 8.x]java客户端连接elasticsearch与操作索引与文档
  • [HDOJ4911]Inversion
  • [HITCON 2017]SSRFme perl语言的 GET open file 造成rce
  • [HXPCTF 2021]includer‘s revenge
  • [Java基础]—JDBC