这里做一个关于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);
}
}