Articles of debugging

在游戏循环中处理大量循环日志条目的最好方法是什么?

我有一个自定义的日志logging系统,使用它在整个引擎和游戏中散布。 系统链接到一个具有std::vector<string> logs[NUM_LOG_TYPES]的“LogStore” std::vector<string> logs[NUM_LOG_TYPES] – 每个向量对应于它的日志types(信息,错误,debugging等)。 还有一个额外的std :: vector,它以接收到的顺序对所有日志条目有“坐标”。 现在,所有的日志输出也显示在我的游戏开发控制台内。 游戏控制台由HTMLtypes的GUI处理,因此需要为每个日志输出添加新的<p>元素。 我的问题是,在每个主循环中生成的日志条目会冻结引擎,因为它们会继续向游戏控制台中添加元素,并且如果控制台或人员生成警告 – 会创建无限的日志循环。 我想通过一个很好的方式来处理循环日志条目来解决这个问题,这个条目可以让你知道某些事情是严重错误的,但不会冻结引擎 – 就像在最后60帧中显示错误的数量,而不是显示错误本身。 但是你们怎么处理呢? 有谁知道任何漂亮的技巧来做到这一点? 我明白这个问题可能听起来含糊不清,但如果有人遇到这种types的问题,我相信他们会知道到底发生了什么事情。 有问题的日志条目示例: OpenGL的警告(我实际上在许多地方每帧检查错误) 真的在主循环的任何地方打印(可能是debugging,可能是警告)

当相同的条件将消息激活另一个function时,function消息不会发送

所以在使用我的游戏时,没有任何语法或编译错误,但是有一个错误,我一直在努力修复几天,我似乎无法做出正面或反面的之所以不起作用,让我解释一下。 这是玩家看到的时候看到的,他们的动作是能够点击同一侧(左右两侧)的两根导线,并且都应该切换位置。 在这个图像中,蓝线是第一个被点击的,我设置的高亮/高亮方向variables被分配给'w2'(蓝线)和'topLeft'方向,以便当它正确地改变导线的精灵改变职位。 现在我点击了黄色线,将changelight / changelightDirection设置为“w3”(黄线)和“middleLeft”方向,以便在改变位置时正确更改线的精灵,并且在changelight / changelightDirection已被分配,电线shoudl两个开关位置,而是,这发生。 只有黄线(换灯/改变方向导线)切换了精灵,这在所有可能的组合中都是一致的。 为了尝试解决这个问题,我已经浏览了几十次TopLeft和MiddleLeft脚本的脚本,但由于某种原因,同样的问题仍然存在,只有第二次点击的线路改变位置TopLeft.cs void OnMouseDown () { if (levelManager.highlight == "none") { levelManager.highlight = levelManager.leftTopWire; levelManager.highlightDirection="topLeft"; } else { levelManager.changelight = levelManager.leftTopWire; levelManager.changelightDirection = "topLeft"; if (levelManager.highlight == "w1" || levelManager.changelight=="w1") { wireOne.SpriteChange (); } if (levelManager.highlight == "w2" || levelManager.changelight=="w2") { wireTwo.SpriteChange (); } if (levelManager.highlight == […]

无论出于何种原因,当某个布尔variables为true时,Unity编辑器将会崩溃

所以在我的游戏中,我有一个计时器脚本,除非游戏暂停,否则倒计时,但是每当暂停variables为true时,计时器脚本中的某些内容会使编辑器本身崩溃,我必须将任务管理器closures团结,因为它完全冻结。 Timer.cs 使用UnityEngine; 使用System.Collections; 公共类Timer:MonoBehaviour {public LevelManager levelManager; // Use this for initialization void Start () { levelManager = FindObjectOfType<LevelManager>(); StartCoroutine ("timerUpdate"); } // Update is called once per frame void Update () { } IEnumerator timerUpdate (){ while (levelManager.levelTimeSeconds>0) { if (levelManager.isPause== false){ yield return new WaitForSeconds(1); levelManager.levelTimeSeconds -= 1; } } levelManager.isOver = […]

统一的四元数matrix转换失败

Unity 2017.2有一个新的错误,在Unity Issue Tracker打开。 这里是: 断言失败:四元数matrix转换失败,因为input四元数无效{-1。#IND00,-1。#IND00,-1。#IND00,-1。#IND00} l = -1。#IND00 UnityEngine.GUIUtility:ProcessEvent (Int32,IntPtr) 断言失败:expression式上的断言失败:'CompareApproximately(det,1.0F,.005f)'UnityEngine.GUIUtility:ProcessEvent(Int32,IntPtr)断言失败: 断言在expression式上失败:'fRoot> = Vector3f :: epsilon'UnityEngine.GUIUtility:ProcessEvent(Int32,IntPtr) Unity表示它已经被修复了,但是并没有,正如用户在这个问题下所说的那样。 这是由于缩放粒子系统,或类似的东西造成的。 真的很难调查。 这对我来说并不重要,但是它将这个可怕的日志打印到Editor的控制台,并导致这些惊人的滞后峰值: 你有没有遇到过这种情况,如果是的话,修复它,或者至less,抑制Console.Log ? 只有在使用编辑器时才打印这些日志,还是影响构建呢?

Unity 3D – 如何在VSCode中实时运行代码(debugging)

我使用VScode的Unity 3D,我需要做一些debugging。 我安装了Unity Debugger扩展,这个链接是https://marketplace.visualstudio.com/items?itemName=Unity.unity-debug 它工作正常,我可以设置断点和观察variables。 现在我需要在控制台上实时运行一些C#命令(就像我将在JavaScript上debugging一个Web应用程序一样)。 但是,当我尝试在控制台上运行一些简单的C#命令(如打印)时,它会返回: print("r"); Evaluate request failed (Expression not supported.). 如何从控制台运行任何c#命令,并影响使用VSCode实时运行的游戏?

游戏/游戏引擎debugging控制台如何工作?

我正在开发一个使用OpenGL的3D场景渲染器,而debugging控制台是我真正想实现的一些原因: 我认为这有助于开发,所以越早实施就越好。 这似乎是一个非常有趣和强大的function,知道如何执行。 我很难find关于这样的控制台如何工作的很好的材料,我很抱歉,因为这很可能是谷歌恶劣。 我发现这个问题似乎很有意义,但是 – 我很可能是错的 – 我不确定它正在讨论我正在寻找的东西。 我正在创建一个相当强大的控制台,它可以执行带有参数的命令,例如命令可能具有多个深度级别,例如下面的命令可能存在: [camera set pos]位置[camera set pos] :将相机位置重置为0,0,0。 [camera set pos -3 2 5.5] :将相机位置设置为-3,2,5.5。 [camera set clip 0.1 1000] :将相机近端剪辑设置为0.1,将远端剪辑设置为1000。 [camera set clip far 1024] :将相机远剪辑设置为1024。 [new object <list of components>] :添加一个新的对象到场景中,不知道用户应该如何input属性和组件属性,因为它们的列表是可变长度的。 例如,用户可能只是附加一个位置并将默认对象添加到场景中,或者他们可能会尽可能地指定网格,纹理,着色器等。 [new light 3 2 1 0 255 0] :在3,2,1处添加绿灯。 显然灯会有更多的属性。 [new light 3 […]

如何debuggingAndroid应用程序的Eclipse?

好。 所以虽然这不是一个编程问题。 我想知道人们如何debugging应用程序? 你如何查看日志猫,以及这些exception抛出等? 我是否需要在模拟器上运行应用程序以查看所有内容,或者在手机上运行应用程序之后(在未连接到计算机的情况下)查看此应用程序的方法吗? 插件和技巧的链接将是非常有用的,因为即将开始我的下一个游戏的工作,而第一个工作正常,debugging时有很多问题。

Unity / VS只用UnityVSdebugging?

嗨, 这一件事情我不清楚:是不是可以用Visual Studio 2013debuggingUnity 4.3的C#而无需任何插件? 如果不是,我该怎么debugging呢?

使用Unity 5时,有没有办法打印/保存/识别在特定点执行的最后n行代码?

所以,这就是我所追求的。 有没有一种方法可以确定哪些是在Unity 5(用C#)在游戏的给定点执行的最后n行代码? 我知道我可以使用Debug.Break()来设置断点来帮助识别代码的有问题的部分。 但是,当代码升级并且多个function交互时,有时难以识别紧接在中断点之前发生的事情。 所以,我的问题。 有没有办法检索例如在断点之前执行的代码行?

我的Android游戏在Unity编辑器上工作得非常好,但是不能在设备上运行

我工作在一个Android团结项目。 我的游戏在编辑器上运行得非常好,但是当我在蓝色模拟器上构建它并运行它时,它开始工作不正常。 子弹一次射击两次。 当水平没有开始,屏幕到下一个级别显示和…可能是这个问题的原因是什么? 也许理由是不好的模拟器