纳金网

标题: unity3d 游戏对象消失三种方法的区别(enabled/Destroy/active) [打印本页]

作者: star-小虎    时间: 2013-10-23 15:39
标题: unity3d 游戏对象消失三种方法的区别(enabled/Destroy/active)
gameObject.renderer.enabled
是控制一个物体是否在屏幕上渲染或显示  而物体实际还是存在的 只是想当于隐身 而物体本身的碰撞体还依然存在的

GameObject.Destroy()  
表示移除物体或物体上的组件 代表销毁该物体  实际上该物体的内存并没有立即释放 而是在你下下个场景中槽释放内存资源,就是你a场景中Destroy了 一般是在c场景中才真正释放该物体的内存资源(这是我的体会 不知道理解错误没)

gameObject.active   
是否在场景中停用该物体   在你gameObject.active =false中 则你在场景中用find找不到该物体  
如果该物体有子物体 你要用SetActiveRecursively(false) 来控制是否在场景中停用该物体(递归的)

作者: wusky751023    时间: 2013-10-24 23:40
一定要頂一下
這是官方沒有說明白的部分

感謝大大詳解!!!
作者: 徐徐的风    时间: 2013-10-26 16:04
谢谢分享。
作者: huhumark    时间: 2013-10-26 21:52
感觉在父子物体上的这三个方法也有区别
作者: 幸福小猪    时间: 2013-10-28 11:04
感谢楼主分享
作者: cc386725    时间: 2016-12-12 16:01
由游戏对象名称(标签)获取

//**当tag包含多个对象时,会获取到最后读取的那个对象**
using UnityEnine;
using System.Collections;
public class Myclass:MonoBehaviour{
    void Start(){
        //获取名称为"gamename"的游戏对象
        GameObject name = GameObject.Find("gamename");
        name.transform.Translate(0, 0, 1);
        //获取标签为"gametag"的游戏对象
        GameObject tag = GameObject.FindWithTag("gametag");
        teg.GetComponent<Test>().doSomething();
    }}




欢迎光临 纳金网 (http://go.narkii.com/club/) Powered by Discuz! X2.5