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;

}

}

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

preview窗口 unity_Unity3D在Preview中打印日志的方法相关推荐

  1. Android:Android NDK项目中C++文件中打印日志

    Android NDK项目中C++文件中打印日志 工作需要,在NDK项目中的C++文件中打印日志,还是费了点劲查找 才达到自己 想要的效果了. 步骤 添加头文件 添加头文件 定义宏函数 #includ ...

  2. JNI的native代码中打印日志到eclipse的logcat中

     1 添加ndk对log支持 若需要添加ndk对log的支持,只需要通过以下2步即可实现. 1.1 修改Android.mk 在Android.mk中添加如下内容: LOCAL_LDLIBS:=- ...

  3. 这才是JAVA中打印日志的正确姿势

    作者:lrwin 原文链接:http://t.cn/E9BkD7a 使用slf4j 1. 使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一 2. 实现方式统一使用: Logback框架 打 ...

  4. java logger使用_这才是JAVA中打印日志的正确姿势

    作者:lrwin 原文链接:http://t.cn/E9BkD7a 使用slf4j 1. 使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一 2. 实现方式统一使用: Logback框架 打 ...

  5. Android真机调试打印日志的方法

    使用模拟器效率是很低的,所以真机调试是多数开发者的选择.使用模拟器调试程序和使用真机调试程序还是有一些不同的.比如,某些手机在调试过程中,不会打印日志出来. 真机调试不输出日志到logcat的原因是手 ...

  6. ios开发中打印日志消息控制

    问题 在ios项目开发中,项目发布时需要去掉NSLog消息,不然会非常影响性能,但是去掉NSLog是一件非常费事的事情 解决办法 在项目的目录Supporting Files->项目名称-Pre ...

  7. 取消Spark中打印日志

    将spark中的conf目录下的log4j.properties放到ieda中的resources下 将 INFO WARN替换成ERROR 替换快捷键ctrl+r log4j.rootCategor ...

  8. labelcommand打印条码_VB应用程序中打印条形码的方法

    展开全部 条形码作为一e68a843231313335323631343130323136353331333233656533种机器可识别的图形,它能快速.准确地标识某种产品或商品,在许多数据库应用中 ...

  9. 02_JNI中Java代码调用C代码,Android中使用log库打印日志,javah命令的使用,Android.mk文件的编写,交叉编译

     1  编写以下案例(下面的三个按钮都调用了底层的C语言): 项目案例的代码结构如下: 2 编写DataProvider的代码: package com.example.ndkpassdata; ...

最新文章

  1. 企业网络推广“卡壳”了?如何更有效提升SEO排名?
  2. 海南大计算机与网络,2010-2014年海南省计算机与网络发展情况
  3. WebQQ hash加密算法PHP版
  4. html里,实现图片与文字对齐的最简洁方法
  5. Python压缩多个属于不同驱动器的文件夹至同一个zip文件
  6. 2021 年前端学习路线总结
  7. java利用redis实现排行榜_Java简单使用redis-zset实现排行榜
  8. 从零搭建ES搜索服务(一)基本概念及环境搭建
  9. DBVisualizer 添加数据库JDBC驱动
  10. 大型项目编译注意事项
  11. 基于LSTM的时间序列预测-原理-python代码详解
  12. Django中ORM模型总结(二)[抽象模型类,模型类的对应关系,模型类的属性,字段类型]...
  13. web产品设计的经典著作
  14. JAVA 实现批量PDF 打印,线程池多线程执行(附完整代码)
  15. 基于java《数据结构与算法》网上教学系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  16. Java多线程--概述-转自林炳文Evankaka
  17. [Java] [SurfaceView] 使用EGL
  18. sqrt函数实现(涉及3D游戏引擎源码)
  19. 程序员的两个主线和四个象限
  20. python实现守护进程_Python如何实现守护进程的方法示例

热门文章

  1. LeetCode 355. 设计推特(哈希map+set)
  2. 计算机网络路由选择协议,IP路由选择协议原理和作用
  3. java listutils_Java的list自定义工具类ListUtils
  4. python3 整除_python如何整除
  5. 元素(块、行内、行内块
  6. python中的孤儿进程
  7. js encodeurl java接收_在JS中encodeURI(url)怎样才能不出现乱码?
  8. 缺失值处理 - 获取一段时间内所有日期的列表 - (Python、MySQL)
  9. 逻辑性不好可以学python吗_如果本文若未能让你学会“Python”,可能真的不适合学习Python...
  10. linux下的idea的界面问题,错位以及各种...