Unity3d 销毁

using UnityEngine;
using System.Collections;

public class destroy : MonoBehaviour {

    void Start () {
        print("start");

        destroyObject();
        //destroyImmediateObj();
        print(gameObject.name);
        /*
         destroyObject销毁gameObject后还能正常显示名字,DestroyImmediate销毁后则不能。
         因为:
            DestroyImmediate立即对对像进行销毁;
            Destroy销毁场景中的物体,但内存中还存在,当令它需要销毁时,只是给一个标识。
            而内存中它依然是存在的,只有当内存不够,或一段时间没有再次被引用时
            或者更多合理的条件满足),机制才会将它销毁并释放内存。
         */
    }

    void Update () {
        print("update");
    }

    private void destroyObject()
    {
        //销毁对象本身
        Destroy(gameObject, 1);
        //销毁其他对象
        Destroy(GameObject.Find("Plane"));
        //销毁组件
        Destroy(GetComponent<Rigidbody>());
    }

    private void destroyImmediateObj()
    {
        DestroyImmediate(gameObject);
    }
}
时间: 2024-10-11 07:43:26

Unity3d 销毁的相关文章

Unity3D中关于场景销毁时事件调用顺序的一点记录

先说一下我遇到的问题,我弄了一个对象池管理多个对象,对象池绑定在一个GameObject上,每个对象在OnBecameInvisible时会进行回收(即移出屏幕就回收),但是当场景切换或停止运行程序时场景中如果还有待回收的对象,就会报错,报错显示的信息为,我的对象池GameObject已经被销毁了云云,因为回收的对象我会把他们作为绑定了对象池的GameObject的子级来方便管理. 所以唯一的可能就是脚本方法调用顺序不可控,即不同GameObject的OnBecameInvisible在其它Ga

Unity3D 学习教程 13 C# 销毁炮弹

gameObject.renderer.enabled //是控制一个物体是否在屏幕上渲染或显示  而物体实际还是存在的 只是想当于隐身 而物体本身的碰撞体还依然存在的 GameObject.Destroy()  //表示移除物体或物体上的组件 代表销毁该物体  实际上该物体的内存并没有立即释放 而是在你下下个场景中槽释放内存资源,就是你a场景中Destroy了 一般是在c场景中才真正释放该物体的内存资源(这是我的体会 不知道理解错误没) gameObject.active   //是否在场景中

unity3d通过代码动态创建销毁游戏对象

只能动态创建内部提供的游戏对象,代码如下: //按下C后创建 if (Input.GetKeyDown (KeyCode.C)) { GameObject s1 = GameObject.CreatePrimitive (PrimitiveType.Sphere);//创建 s1.name = "qiu";//命名 s1.GetComponent<MeshRenderer> ().material.color = Color.red;//网格渲染器 s1.transform

使用Unity3D的50个技巧:Unity3D最佳实践

刚开始学习Unity3D时间不长,在看各种资料.除了官方的手册以外,其他人的经验也是非常有益的.偶尔看到老外这篇文章,觉得还不错,于是翻译过来和大家共享.原文地址:http://devmag.org.za/2012/07/12/50-tips-for-working-with-unity-best-practices/,下面是译文. 欢迎转载,请注明出处:燕良@游戏开发.另外,欢迎各路高手加入我的QQ群:264656505,切磋交流技术. 关于这些技巧 这些技巧不可能适用于每个项目. 这些是基于

Unity3D游戏开发初探

一.预备知识-对象的"生"与"死" (1)如何在游戏脚本程序中创建对象而不是一开始就创建好对象?->使用GameObject的静态方法:CreatePrimitive() 以上一篇的博文中的"指哪打哪"例子为基础,在AddForce脚本写入以下代码:   其中在CreateCube方法中,使用GameObject.CreatePrimitive方法来创建Cube类型的游戏对象实例,设置了它出现的坐标并为它增加刚体组件.这里可以看下AddCo

【转】Unity3D 射线Ray实现点击拾取

游戏中经常会有鼠标移动到某个对象上来拾取它的功能,我们可以用Unity3D中的射线Ray实现这一效果.原理是在我们鼠标的位置,从屏幕射出一条射向世界空间的射线,当这条射线碰撞到我们需要拾取的对象时,我们就销毁对象,把它添加到我们的背包中. 我们来做一个简单的Demo,我们在场景中添加一个方块Cube,一个小球Sphere,当我们鼠标放在方块上时没有任何反应,而当我们把鼠标放在小球上时,小球会消失. 新建一个项目,我们命名为"RayTest",然后在场景中新建一个小球,方块,和添加灯光,

Unity3d与设计模式(二)单例模式

为什么要使用单例模式 在我们的整个游戏生命周期当中,有很多对象从始至终有且只有一个.这个唯一的实例只需要生成一次,并且直到游戏结束才需要销毁. 单例模式一般应用于管理器类,或者是一些需要持久化存在的对象. Unity3d中单例模式的实现方式 (一)c#当中实现单例模式的方法 因为单例本身的写法不是重点,所以这里就略过,直接上代码. 以下代码来自于MSDN. public sealed class Singleton { private static volatile Singleton inst

Unity3D之MonoBehaviour的可重写函数整理

转载 最近在学习Unity3d的知识.虽然有很多资料都有记录了,可是我为了以后自己复习的时候方便就记录下来吧!下面的这些函数在Unity3d程序开发中具有很重要的作用. Update 当MonoBehaviour启用时,其Update在每一帧被调用. LateUpdate 当Behaviour启用时,其LateUpdate在每一帧被调用. FixedUpdate 当MonoBehaviour启用时,其 FixedUpdate 在每一帧被调用. Awake 当一个脚本实例被载入时Awake被调用.

Unity3D脚本学习——运行时类

AssetBundle 类,继承自Object.AssetBundles让你通过WWW类流式加载额外的资源并在运行时实例化它们.AssetBundles通过BuildPipeline.BuildAssetBundle创建. 参见:WWW.assetBundle ,Loading Resources at Runtime ,BuildPipeline.BuildPlayer function Start () { var www = new WWW ("http://myserver/myBund