Articles of 错误

使用粒子系统时,Unity构建应用程序崩溃

我有一些基本的火焰效果的场景。 它的最大粒子数量是20,一次在屏幕上有不超过4-5个实例。 我甚至检查了分析器,但内存使用量最多大约为150 MB。 鉴于这些,编辑器运行良好,但一旦粒子变得可见,游戏每次崩溃。 我在一个虚拟的Nexus平板电脑上testing了这个。 我正在使用Unity 2017.1.0p4。 如果有人遇到这样的问题,我会很感激任何帮助解决这个问题。 编辑:内置的游戏在PC上也是如此(使用同一台个人电脑做了PC的最终版本)。 EDIT2: 所以我能够将问题追溯到以下几行: var mf = transform.parent.gameObject.GetComponentFromParentRecursive<MeshFilter>(); if (mf != null && mf.mesh != null) { var sh2 = system.shape; sh2.mesh = mf.mesh; return; } public static class GetComponentRecursive { /// <summary> /// Returns the first Component (T) found on the parent or its children /// […]

Unity – 单击button和下拉并不总是响应(仅在构建中发布,而不在编辑器中)

我在游戏中有几个button和下拉菜单。 现在,这些元素快速响应,每次点击编辑器时,但是当我创建一个构建,我必须点击下拉和button多次,使他们执行相应的行动。 这意味着,虽然他们工作,我必须多次点击它们。 为什么只有在构建中才显示出这种行为,我能做些什么来纠正呢? 我曾尝试降低graphics设置,分辨率。 尝试在EventSystem中启用Force Module Active选项。 每个场景中只有一个canvas。

统一的四元数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 ? 只有在使用编辑器时才打印这些日志,还是影响构建呢?

Unity3d相当于ACRA Android崩溃记者库

标题说明了一切。 有一个可以使用的Android ACRA崩溃记者库的Unity3d等价物吗? 如果没有连接到互联网,ACRA会保存崩溃报告,并可以使用各种方法将崩溃(堆栈跟踪)发送到您select的后端。 我得到的最远是挂钩到Application.logMessageReceived callback 。 此外,我们并没有兴趣使用第三方专业的崩溃报告服务,因为我们正在建立自己的服务。 我们只需要一种捕捉错误(堆栈跟踪)并发送或存储它们以备在互联网连接可用时进行传送的方式。

为什么我的跟踪对象旋转错误?

我写一个脚本,使我的球员达到目标的目的地。 看起来像这样到目前为止: private void MoveTowardsGoal() { if (Vector3.Distance (reachGoalTarget.transform.position, transform.position) > 2.0f) { rDirection = (reachGoalTarget.transform.position – transform.position).normalized; if (rAcceleration < rMaxSpeed) { rAcceleration += 0.5f; } rVelocity = rDirection * Time.deltaTime * rAcceleration; transform.Translate (rVelocity,Space.World); } } 它工作正常:对象移动到目的地点。 但是,我希望他们移动在向前的方向(前向z轴)看目标。 目前他们的X轴朝前。 我尝试了一个简单的旋转里面的Start()像transform.LookAt(reachGoalTarget.transform) 。 有了这个,他们看向前方,但他们完全摆脱了他们的初始位置旋转自己到达目标。 我究竟做错了什么?

Unity编辑器窗口变黑

我最近买了一台新的笔记本电脑,英特尔i5-5200U高清显卡5500和AMD Radeon R5 M230 2GB和8GB内存,以及我的统一发生了什么:如果打开它,尽量减less,然后再次最大化,它会渲染一些怪异编辑器随机区域的黑屏,如下所示: 但是,如果我不是最小化团结,只是打开其他窗口,当我回到团结没有发生,没有黑色怪异的“方块”。 所以,当我最小化统一本身,然后最大化它,如果我最大化另一个程序超过团结,然后再次打开团结,这不会发生。 任何人都可以告诉我为什么发生这种情况 我总是不得不重新启动统一….这是我的video卡的问题? PLZ的帮助

Unity游戏中的所有脚本都无法加载

我不能在这里提供一个“为什么”,因为据我所知可以自发地发生 – 在将编辑保存到我的一个脚本之后,它刚刚开始发生。 但是这是问题: 我的脚本中的每一个脚本仍处于相同的脚本文件中,不能再被find并加载。 所有脚本组件(例如以Game Manager组件为例)现在看起来像这样: 或者像这样: 尝试通过添加组件>脚本> [所需脚本]find脚本不起作用,因为在添加组件菜单中甚至没有脚本项目。 我已经看了这个,我发现的答案都不适用: 是的,每个脚本的文件名都与其中的类名相同 我尝试重新导入所有资产(资产>重新导入所有),没有成功。 从项目中取出所有脚本,重新启动Unity,然后重新导入脚本。 没有 删除所有脚本组件,然后重新应用它们。 它没有工作,因为,正如我所说,组件菜单中没有脚本项目。 从字面上看,这是一个非常具有破坏性的游戏,因为这是一个嗜好游戏(我不是在做这个工作,而是在闲暇时间)。 如果我不能恢复游戏,我将无法使自己重新启动游戏。 所以任何帮助非常感谢。

编译为WebGL时出现Unity 3D错误:未find目标目录

当我尝试在Windows 8.1(以及Unity的最新版本)的开发模式下将Unity项目编译为WebGL时,我收到以下错误(第一个被截断,因为它非常长;我可以根据请求发布)。 DirectoryNotFoundException :未find目标目录: Temp/StagingArea/Data/Resources System.IO.File.Copy ( System.String sourceFileName , System.String destFileName ,布尔覆盖)… 建立播放器时出错: DirectoryNotFoundException :找不到目的地目录: Temp/StagingArea/Data/Resources 没有输出; 我试图建立我的项目目录是空的。 某个地方的论坛post提示我在管理员模式下运行Unity,但是如果这样做的话,我不会在这里发帖寻求帮助。

为什么我的A *实现溢出堆栈?

我对游戏开发相当陌生,也是我第一次尝试2D寻路。 我正在使用这里详细的A *algorithm。 在大多数情况下,它似乎是正确的,正如预期的那样工作。 然而,当试图在地图上的一个建筑物周围包裹我的path时,在ClosedList (存储path的坐标的列表)中引起堆栈溢出。 看起来,在path的某一点,algorithm是在两个瓦片之间来回切换,但我不知道为什么。 代码可能不是做事情的最好方式,但这是我第一次尝试。 道歉,如果它冒犯任何人。 :P void CheckSquare(Vector2 Start, Vector2 End) { //Check for Invalid Start/End Points if (Start == End || grid.PTileArray[(int)Start.x, (int)Start.y].CurrentType.Passable == 0 || grid.PTileArray[(int)End.x, (int)End.y].CurrentType.Passable == 0) { return; } //Check which adjacent tiles are passable if (grid.PTileArray[(int)Start.x – 1, (int)Start.y].CurrentType.Passable == 1) { OpenList.Add(new Vector2(Start.x – […]

问题与Input.GetKeyDown在Unity中设置一个计数器:只有一个按下多个值

使用Unity 5,我想用一个键盘键(“f”)按下时增加一个计数器。 这意味着,使用Input.GetKeyDown(“f”)函数的方式是:如果在计数器= 1时按下“f”,则计数器设置为等于2.如果“f”为按下,计数器被设置为3。 然而,它不能正常工作:似乎Unity检测到被按下的按键很多次,不管是否只按了一次。 请参阅说明情况的代码: using UnityEngine; using System.Collections; public class TestingKeyGetRecursion : MonoBehaviour { int counter = 1; void Update () { if(counter == 1 && Input.GetKeyDown("f")) { counter = 2; Debug.Log(counter); } if(counter == 2 && Input.GetKeyDown("f")) { counter = 3; Debug.Log(counter); } if(counter == 3 && Input.GetKeyDown("f")) { counter = 1; […]