unity, Destroy注意事项

Destroy不是立即发生作用,而是推迟到帧末,所以下面代码是错误的:

void OnTriggerEnter(Collider other){
   if (other.gameObject.tag == "coin") {
    m_score++;

    Destroy(other.gameObject);

  }

}

会导致吃一个金币score加好几次的问题。因为OnTriggerEnter一帧之内可能会触发好几次。
正确的写法是:

void OnTriggerEnter(Collider other){
   if (other.gameObject.tag == "coin") {
    m_score++;

    other.gameObject.SetActive(false);

    Destroy(other.gameObject);

  }

}

这样,虽然Destroy销毁不及时,但是SetActive确保这个coin在此后不会再触发OnTriggerEnter了。

另外注意把Destroy改成DestroyImmediate是不行的,原因不知,但按官方文档所说,游戏脚本中最好永远不要使用DestroyImmediate,除非是Editor脚本。

时间: 2024-11-10 08:22:13

unity, Destroy注意事项的相关文章

unity, destroy all children

删除node的所有子节点: 错误方法: int childCount = node.transform.childCount;         for (int i=0; i<childCount; i++) {            GameObject child=node.transform.GetChild(i).gameObject;            Destroy(child);        } 以上方法之所以错误,是因为Destroy在下一帧才生效,而在本帧之内各child

UNITY Destroy()和DestroyImadiate()的区别

using System.Collections; using System.Collections.Generic; using System.Timers; using UnityEngine; using System.Diagnostics; public class testdestroy : MonoBehaviour { GameObject cubeGo; Transform rootTrans; // Use this for initialization Stopwatch

unity 美术注意事项

有时候美术的一个不小心,就会给程序徒增极大的工作量,所以在项目开始之前是有必要和美术沟通一下,来规范一些东西, 1.将单体模型的轴心置中. 2.模型有父物体时,子物体应相对于父物体的(0,0,0)位置建模,即父物体的位置最好是整个模型的中心点. 3.unity使用的是左手坐标系,模型的 z 轴正方向应为模型的正向,x轴正方向为右. 4.3D模型的大小以米为单位,如:房子的大小为3米,人物1.8米等. 5.贴图文件像素大小最好为2的n次方,unity3d中可识别的最大尺寸为4096*4096. 6

unity, WaterProDaytime注意事项。

一,多个WaterProDaytime不要公用material. 原因是:水面material的shader(FXWaterPro.shader)引用了reflectionTexture,而水面1的reflectionTexture是由水面1的reflectionCamera渲染出来的.水面2的reflectionTexture是由水面2的reflectionCamera渲染出来的.由于水面1的reflectionCamera与水面2的reflectionCamera的观察方向不同,所以必须用两

Unity3D技术之Visual Studio C# 集成说明

欢迎来到unity学习.unity培训.unity企业培训教育专区,这里有很多U3D资源.U3D培训视频.U3D教程.U3D常见问题.U3D项目源码,我们致力于打造业内unity3d培训.学习第一品牌. Visual Studio C# 集成 我可以使用哪些功能? 更加复杂的 C# 开发环境.其中包括智能自动完成.计算机辅助更改源文件.智能语法高亮提示,还有其他更多功能. Express 和 Pro 有何不同? VisualStudio C# 2010 是 Microsoft 产品.它包括快速版

CoinEye PRIVACY POLICY

PRIVACY POLICY First, welcome to use the app Thank you for using our products and services ("Services"). Service provided by the app by using our services, you agree to the terms. Please read carefully. Our range of services is very broad, so so

unity 与 android 协调工作 注意事项

原地址:http://blog.csdn.net/u012085988/article/details/17436191 1.unity调android函数 [csharp] view plaincopy AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject activity = jc.GetStatic<AndroidJavaObject&g

unity, particle play once and destroy

粒子播放一次后销毁:        //ref: http://answers.unity3d.com/questions/219609/auto-destroying-particle-system.html        //ref: http://answers.unity3d.com/questions/41855/cannot-implicitly-convert-type-unityengineobject-t.html        particle.GetComponent<Pa

Unity打包APK横屏时的注意事项

由于你在Unity设置了横屏. 所以也需要在安卓的AndroidManifest.xml文件中, application/activity下声明为横屏.否则会黑屏,根本不给你报错,愁死你. 加上这一句就好了. android:screenOrientation="landscape"