Tag: unity3d

随着时间的推移,Unity淡化图像alpha

我想逐渐而不是立即改变我的UI图像的alpha。 到目前为止,我立即淡化图像alpha的代码如下 public void Highlight() { foreach (Image image in imagesToHighlight) { Color c = image.color; if(ca halfColor) { ca = halfColor; } image.color = c; } } 上面的代码工作正常,但我正在努力修改我的代码,以便它不是立即执行,而是在一两秒内缓慢完成。 我试过改变行ca = maxColor; 为了看看图像是否会不断缓慢消失但是alpha会立即下降。 我究竟做错了什么?

如何检测相机FOV中的所有游戏对象? Unity3D

我想检测所有标记为“Wall_ [0-24] ”的游戏对象,这些对象都在相机FOV中。 我已经尝试过Raycasting,但因为它只有一条光线,所以它不会同时捕获多个对象。 我尝试过这个: void Update() { GameObject walls = GameObject.FindGameObjectWithTag (“Wall”); Renderer[] renders = walls.GetComponentsInChildren (); for (int i = 1; i < renders.Length; i++) { if (walls.GetComponentInChildren ().isVisible) { Debug.Log (renders[i] + ” is detected!”); } else { Debug.Log (“Nothing’s detecetd!”); } } } 我得到的只是一次又一次 – 不是真的取决于相机的位置。 当我的相机遵循一定的路径时,可见的墙壁应该改变。 在图像中,绿色部分是可见的,红色部分不再可见(因为相机已经通过它们)。 那么我怎么能通过这个特定的相机实现所有看到的墙的输出 ? 感谢您的任何帮助!

什么是嵌套协同程序生成的代码

编辑原始问题详细说明:我正在使用统一协程执行一些重载操作。 Unity是一个游戏引擎,代码在帧内运行。 如果操作是密集的,则必须在协同程序中完成,否则帧需要很长时间才能完成。 协程方法就是DoTasks 。 如果您不熟悉Unity引擎,它们与迭代器类似。 首先,我必须说这些代码按照它们应该的方式工作。 问题在于堆分配。 那说我会解释代码的作用。 当调用Init ,它启动协程并进入DoTask然后进入foreach以迭代currentTask.Execute()然后进入obj.CreateCellGosTask进行迭代。 现在我们遇到的第一个收益率回报,foreachs链将结果返回到初始协程(即StartCoroutine(DoTasks()))并且我们已经完成了框架。 在下一帧中,代码在执行的最后一行之后的链中继续。 这是行为,并且工作正常。 public class TaskScheduler : MonoBehaviour { private static volatile Task currentTask; public void Init(){ StartCoroutine(DoTasks()); //Starts the coroutine } private IEnumerator DoTasks() { while(true){ foreach (object b in currentTask.Execute()) { yield return b; //Do something } } } public class Task […]

有没有办法防止ThreadPool制造垃圾?

执行multithreading方法会产生垃圾。 为什么会这样,我们可以阻止它吗? ThreadPool.QueueUserWorkItem(callBack, state); 编辑:垃圾我指的是创建的对象,然后超出范围。 垃圾收集非常慢,因为它的旧版单声道。 所以你从GC中获得的每一个kb都是一个胜利。 如果您不熟悉统一引擎,请在屏幕截图中查看突出显示行上的GC列。 它说0.6kb。 因此它创建了600字节的垃圾。 回调代码不会创建任何垃圾,因此它来自ThreadPool.QueueUserWorkItem 编辑2:这里进一步详细说明是一个更具体的例子: public class TestThread : MonoBehaviour { public void Update() { if (Time.frameCount%10 == 0) ThreadPool.QueueUserWorkItem(DummyMethod); } public void DummyMethod(object meaningless) { } } 这是结果。 请查看突出显示的行。 GC色谱柱显示285Bytes。 由于DummyMethod没有做任何事情,垃圾与ThreadPool有关。 编辑3:为了放松情况并找到替代方案,有一个工作线程可以从队列中执行作业。 如果有多个CPU可用,它必须在除了统一使用的CPU之外的CPU上运行。 Unity几乎可以在单个线程中执行任何操作,因此同一CPU上的后台工作人员将成为灾难。 此外,它是一个跨平台项目,因此仅限Windows的解决方案将无法运行。 所以基本上我需要一个工作线程解决方案,并知道是否可以实现线程的CPU是否与另一个线程相同。

aafdex-sdk unity3d在场景转换时崩溃 – 仅限于Android

我一直在使用Affectiva的affdex-sdk(v2.2)为Unity 5.4开发一个情感识别应用程序。 我的应用程序包含3个场景,然后我使用affectiva的Camera_Detector场景,并使用情感作为触发器转到下一个场景。 它在UnityEditor中完美运行,并作为Windows编译包(x86)运行。 但是,当我将其部署到Android(5.0)时,崩溃始终在运行时从Camera_Detector场景跳到下一个场景(场景加载到Camera_Detector之前,而Camera_Detector本身永远不会崩溃)。 我正在使用(在C#中) SceneManager.LoadScene(“nextscene”); Android设备只显示“不幸的是,affdex_emotapp”已经停止。 有没有机会让这个在Android下工作? 这是logcat的崩溃输出: F/libc (15037): Fatal signal 11 (SIGSEGV), code 1, fault addr 0x898f0308 in tid 15053 (UnityMain) I/DEBUG ( 247): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** I/DEBUG ( 247): Build fingerprint: samsung/matissevewifixx/matissevewifi:5.1.1/LMY47X/T533XXU1BOI3:user/release-keys’ I/DEBUG ( 247): Revision: ‘2’ […]

在Unity3D中组合多个网格并保留材质

我有三个网格A,B和C.每个网格都有自己的材质,由单个subMesh组成。 现在,我想创建一个新的网格,其中包含例如每个(A,B和C)网格的10个实例,它将包含3个子网格,即每个类型的所有元素的一个子网格。 我为此目的使用“Mesh.CombineMeshes(…)”,但它将所有网格组合成一个subMesh或为每个元素创建subMesh(在我的例子中为30个subMeshes)。 这两个结果对我来说都是不可接受的。

等待动画在unity3d中完成

我有一个动画,在Switch case中的Update -function中播放。 动画结束后,将布尔值设置为true。 我的代码: case “play”: animation.Play(“play”); gobool = true; startbool = false; break; 问题是我的gobool和startbool立即设置而没有完成动画。 如何让我的程序等到动画结束?

我如何抓住所有子游戏对象?

有没有办法获得所有子游戏对象? 我正在尝试GameObject.Find但需要将名称作为string 。

纹理在编辑器中加载但不在独立中加载(显示为粉红色)

我正在使用名为Simple Obj的资产,它允许我导入obj,它们的材质和纹理相关联 。 这在我的编辑器中工作正常,但不在我的独立版中。 我的OBJ不在我的资源文件中 ,我从另一个使用WWW方法的文件中获取它。 这是我如何做到这一点, 他下载我的OBJ,创建一个Gameobject并将其放在我的场景中 : private IEnumerator DownloadAndImportAllInBackground(string url, Plane newPlane) { string objString = null; string mtlString = null; Hashtable textures = null; GameObject planeObject = null; bool gameObjectPerGroup = false; bool subMeshPerGroup = false; bool usesRightHanded = true; yield return StartCoroutine(DownloadFile(url, retval => objString = retval)); yield return StartCoroutine(DownloadFile(url.Substring(0, […]

如何在Unity3D中创建脚本图标?

我为它创建了一个scipt和编辑器。 现在我想用这样的方式来分配一个图标: 怎么办这样的事? 无法找到任何相关文档 。