现在的位置: 首页 > 编程语言 > 正文

Unity3D在Preview中打印日志的方法

2020年02月13日 编程语言 ⁄ 共 1845字 ⁄ 字号 评论关闭

Preview窗口除了可以预览模型之外,我们还可以做别的操作。

今天我们来写个小工具在Preview窗口中显示调试信息。

可以看下面的图,同样是打印 health 和 power 的日志,在 Preview 中显示比在 Console 中显示舒服多了。

左边是Console中显示,右边是Preview窗口中显示。

创建Editor目录,然后把下面的脚本放进去

using UnityEngine;using UnityEditor;[CustomEditor(typeof(Object), true)]public class PreviewGUIEditor : Editor { /** Update every 15th frame. */ private const int updateOnFrame = 15; private GUIStyle _previewLabelStyle; private GUIStyle previewLabelStyle { get { if (_previewLabelStyle == null) { _previewLabelStyle = new GUIStyle("PreOverlayLabel") { richText = false, alignment = TextAnchor.UpperLeft, fontStyle = FontStyle.Normal }; // Try to get a fixed-width font on macOS. var font = Font.CreateDynamicFontFromOSFont("Monaco", 12); // Failing that, try to get a fixed-width font on Windows. if (font == null) font = Font.CreateDynamicFontFromOSFont("Lucida Console", 12); // XXX What fixed-width font should I request if we're on Linux? if (font != null) _previewLabelStyle.font = font; // Debug.Log("Fonts: \n" + string.Join("\n", Font.GetOSInstalledFontNames())); } return _previewLabelStyle; } } public override bool HasPreviewGUI() { return Application.isPlaying; } public override bool RequiresConstantRepaint() { // Only repaint on the nth frame. return Application.isPlaying && Time.frameCount % updateOnFrame == 0; } public override void OnPreviewGUI(Rect rect, GUIStyle background) { string str = target.ToString(); GUI.Label(rect, str, previewLabelStyle); }}

在我们需要打印日志的类里面 重载ToString()函数,返回需要在preview中输出的内容。

下面是上面截图的示例,一个Player类,在ToString()函数中返回了 health 和 power的输出内容。

using UnityEngine;public class Player : MonoBehaviour{ public int health = 10; public int power = 10; // Use this for initialization void Start () { } // Update is called once per frame void Update () { health += 1; power += 2; Debug.LogError("health = "+ health); Debug.LogError("power = "+ power); } public override string ToString() { return "health = " + health+"\n"+ "power = " + power; }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: Unity3D在Preview中打印日志的方法

以上就上有关Unity3D在Preview中打印日志的方法的全部内容,学步园全面介绍编程技术、操作系统、数据库、web前端技术等内容。

抱歉!评论已关闭.