与销毁相关的方法(初学:14)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/lfanyize/article/details/101686338

在开发过程中经常会遇到想要某个游戏物体在执行完相应功能之后,就失去的存在的必要,应将之销毁,如果不销毁,将其放在那里不管不顾的话,轻则影响项目的运行效率,重则直接影响项目的正常运行,所以,销毁功能时必不可少的,大致有两个销毁方法,一个是游戏对象、组件、资源的销毁,另外一个是网络对象的销毁,下面进行详细的说明。
Object.Destory():功能时删除游戏对象、组件、资源
它既可以将对象立即销毁,也可以设置一个具体的时间进行销毁,如果删除的对象是一个组件的话,在相应的游戏物体上的组件就会被移除。
,有两种方式找到物体,一种是直接将物体挂上,代码如下:

using System.Collections;

public class Control : MonoBehaviour
{
    public GameObject target;
    public GameObject ball;
    void Start()
    {
        target = GameObject.FindGameObjectWithTag("Ball");
        Destroy(target.GetComponent<Rigidbody>(), 5f);
        Destroy(target, 10f);
    }
}

一种是先使用Tag标签找到物体在销毁

using UnityEngine;
using System.Collections;

public class Control : MonoBehaviour
{
    public GameObject target;
    public GameObject ball;
    void Start()
    {
        Destroy(ball.GetComponent<Rigidbody>());
        Destroy(ball, 10f);
    }
}

在这个代码段中,首先是项目运行之后5s删除ball游戏物体中的刚体组件,然后再过5s销毁游戏物体.

NetWork.Destory方法:这个销毁方法是运用在网络对象上面,值得注意的是,当销毁对象的时候,本地与远端的对象都会被销毁,使用方法如下:
public static void Destory(NetWorkViewID viewID)
public static void Destory(GameObject gameobject)
第一种重载的方法是需要给出游戏物体的ID,然后系统会删除所有和该viewID相关的物体,这个方法本地的和远端的游戏物体都会被销毁.
第二种重载的方法直接传入一个游戏物体即可

using UnityEngine;
using System.Collections;
using UnityEngine.Networking;

public class Control : MonoBehaviour
{
    public GameObject ball;
    public float timer = 0;
    private void Awake()
    {
        timer = Time.time;
    }
    void Update()
    {
        if(Time.time - timer > 2)
        {

            NetworkIdentity.Destroy(ball);
        }
    }
}

MonoBehaviour.OnDestory方法:

using UnityEngine;
using System.Collections;

public class Control : MonoBehaviour
{
    private void Start()
    {
        Destroy(this.GetComponent<Control>(),5);

    }
    private void OnDestroy()
    {
        Debug.Log("this script has been destory");
    }
}

第五行脚本代码的意思是,项目开始运行过5s以后删除这个脚本,然后再删除之后回调方法输出this script has been destory.

猜你喜欢

转载自blog.csdn.net/lfanyize/article/details/101686338
今日推荐