Unity 3D DontDestroyOnLoad 函数使用注意事项

来源:互联网 发布:suse linux snmp 编辑:程序博客网 时间:2024/05/16 06:33

Object.DontDestroyOnLoad 加载时不销毁

static function DontDestroyOnLoad (target : Object) : void

加载新场景的时候使目标物体不被自动销毁。

当加载一个新关卡时,所有场景中所有的物体被销毁,然后新关卡中的物体被加载进来。为了保持在加载新关卡时物体不被销毁,使用DontDestroyOnLoad保持,如果物体是一个组件或游戏物体,它的整个transform层次将不会被销毁,全部保留下来。

然而我们在使用的时候要注意一下,否则会出现很多的游戏物体,比如你的角色进入一个关卡,然后进入另外一个关卡,然后回到原来的关卡,此时该关卡出现了两个角色,角色只会叠加,我们想要的只是一个角色,那么写代码的时候就要注意了,代码如下:

using UnityEngine;using System.Collections;public class Test: MonoBehaviour {    public GameObject prefab;          // 这是个预制,直接拖拽赋值    GameObject clone;                  // 用来接收预制的克隆体    static bool isHaveClone = false;   // 静态变量,所有脚本共用,也就是保证预制只能被克隆一次,不会出现多个角色// Use this for initializationvoid Start () {        if (!isHaveClone)        {            clone = (GameObject)GameObject.Instantiate(prefab);            isHaveClone = true;             GameObject.DontDestroyOnLoad(clone);        }       }// Update is called once per framevoid Update () {}}



0 0