unity3d关于方法DontDestroyOnLoad的研究

方法DontDestroyOnLoad是干什么的呢?

在场景跳转时,有些对象需要保留,这个就是说可以保留对象的。那怎么用,下面介绍一下用法

建一个场景,建一个空物体,给其添加脚本

<pre name="code" class="csharp">public class one : MonoBehaviour {

    public GameObject a;
    public GameObject b;
	void Start () {

        DontDestroyOnLoad(a);
        DontDestroyOnLoad(b);
	}
    void OnGUI()
    {
        
        if (GUILayout.Button("2"))
        {
            Application.LoadLevel(1);
        }
    }


 

这里为了简单的测试,就设置了一个public字段,用拖的方式给其初始化。a拖一个cube,b这里就拖自己;这里可以发现这个方法是可以重复使用的,而且是可以在Awake或者Start里的,下面设置一个新的场景就完成跳转了,

那么如果这个对象有子级,子级能不能保留呢,给cube下在设置一个cube,可以发现,子级是可以保留的;

那意思是说我们把UGUI的画布拖给a,里面的UI就保留到下一个场景里了;设置一个image,用过UGUI的知道,会自动生成一个Canvas,和一个EventSystem,把Cavas拖给a,运行unity,这个时候会发现,下个场景中是保留了image,但是没有EventSystem。所以说还是要手动保存一下。这里也是UGUI没有NGUI的方便之处


那么如果把这个挂有脚本的gameobject,拖给cube作为子物体,在给其建一个同级的一个cube,命名cube1(用于区分),我们把cube1拖给a,运行时会发现,下个场景不会保存

,所以说有父级的物体,父级不保留,子级保留是没有用的。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值