unity执行顺序问题(如何再次执行start方法)

unity执行顺序的文章已经很多了,其实不用看文章,那么麻烦,一张图就搞定了!

Look:更多内容请关注公号:unity风雨路

这里看到最特殊最常用的应该就是OnEnable了。OnEnable是在Awake之后Start之前执行的,特殊之处就是他会在物体隐藏之后再次显示时再次调用,而Start和Awake是做不到这一点!

为了证明宝宝没有说谎,请看实例:

下面有一个sphere(默认隐藏)和一个cube,在按钮上绑定一脚本quite点击按钮会让cube隐藏让sphere显示,而按键盘O键会让cube显示让sphere隐藏。在cube上绑定了一个脚本TESTONE。

 

按钮上绑定的脚本:

 

using UnityEngine;
using System.Collections;

public class quite : MonoBehaviour {
    public GameObject[] GO;
	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
        if (Input.GetKey(KeyCode.O))//按键盘O键
        {
           // Debug.Log("cube出现");
            GO[1].SetActive(false);
            GO[0].SetActive(true);
        }
	}
    public void Clickthisbutton()//点击按钮
    {
      //  Debug.Log("球出现");
        GO[0].SetActive(false);
        GO[1].SetActive(true);
      //  Application.Quit();
}
}

 

 

然后再看在cube上的脚本;

 

using UnityEngine;
using System.Collections;

public class TESTONE : MonoBehaviour {
    void Awake()
    {
        Debug.Log("Awake---1cube");
    }
    void OnEnable()
    {
        Debug.Log("OnEnable---1cube");
    }
    // Use this for initialization
    void Start () {
        Debug.Log("START--1cube");
    }
	
	// Update is called once per frame
	void Update () {
	
	}
}

 

 

下面运行一下看下图的Log;cube上log的执行顺序很明显(这些方法全都只执行一次):

 

然后点击按钮看下图:cube已经隐藏,而sphere出现,所有的log还是原来的。


然后我们清理掉log,按键盘O键看下图;看到cube再次显示,但是log中只有OnEable方法执行了。怎么样宝宝没骗你们吧!!!

那么如何再次执行AWake 或Start方法呢?不用想我肯定是开始说废话了,没错,那就是在OnEable方法里调用这两个方法(如果是在其他脚本写的OnEable方法那就要把那两个改成Public方法了)!好吧,这样其实在最开始就会执行两次Start和Awake方法。

 

using UnityEngine;
using System.Collections;

public class TESTONE : MonoBehaviour {
 public void Awake()
    {
        Debug.Log("Awake---1cube");
    }
  void OnEnable()
    {
        Debug.Log("OnEnable---1cube");
        Start();
        Awake();
    }
    // Use this for initialization
    public void Start () {
        Debug.Log("START--1cube");

    }
	
	// Update is called once per frame
	void Update () {
	
	}
}

 

 

 

 

 

所以当遇到类似的情况就用宝宝的大法吧!哈哈哈!

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值