unity中OnEnable()和OnDisable()

这里做一个关于OnEnable()和OnDisable()个测试。在场景中cube上挂一个脚本TestOne.cs,然后在另一物体上挂脚本TestTwo.cs;

TestOne如下:

public class TestOne : MonoBehaviour {

    private void OnEnable() 
    {
        print("激活");
    }
    private void OnDisable() 
    {
        print("禁止");
    }
}```

TestTwo.cs如下:

void Update ()
    {
        //MouseRotate2();
        MouseRotate();
        testActive();
    }
    private void OnEnable() //只在程序启动时执行一次,因为TestTwo脚本并没有挂在cube上
    {
        print("启用");
    }
    private void OnDisable() //只在程序停止时执行一次,因为TestTwo脚本并没有挂在cube上
    {
        print("禁调");
    }
    void testActive()
    {
        if(Input.GetKeyDown(KeyCode.A))
        {
            // cube.gameObject.SetActive(false);//游戏对象.setActive(false)会激发游戏对象上挂的脚本中的OnDisable()方法(前提是该游戏对象的状态由true到false发生转变);
            // cube.GetComponent<MeshRenderer>().enabled = false; //这种情况下onEnable和onDisable不会被调用的(enable()方法只是控制对象在屏幕上是否渲染出现,碰撞还是可以检测到的哦);
            Destroy(cube.gameObject); //destroy游戏对象会激发游戏对象上挂的脚本中的OnDisable()方法;
        }
        if(Input.GetKeyDown(KeyCode.B))
        {
            //cube.gameObject.SetActive(true);//游戏对象.setActive(true)会激发游戏对象上挂的脚本中的OnEnable()方法(前提是该游戏对象的状态由false到true发生转变);
            // cube.GetComponent<MeshRenderer>().enabled = true;
            Object cc =Resources.Load("Cube");//重新创造该游戏对象也会激发对象上挂脚本中的OnEnable()方法;
            GameObject vv = (GameObject) Instantiate(cc, Vector3.zero, Quaternion.identity);
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值