unity执行顺序问题(如何再次执行start方法)
2017-08-03 20:36
519 查看
2016-09-08 20:13 2084人阅读 评论(1) 收藏 举报
分类:
unity3D(66)
版权声明:本文为博主原创文章,未经博主允许不得转载。
unity执行顺序的文章已经很多了,其实不用看文章,那么麻烦,一张图就搞定了!
Look:
这里看到最特殊最常用的应该就是OnEnable了。[b]OnEnable是在Awake之后Start之前执行的,特殊之处就是他会在物体隐藏之后再次显示时再次调用,而Start和Awake是做不到这一点![/b]
为了证明宝宝没有说谎,请看实例:
下面有一个sphere(默认隐藏)和一个cube,在按钮上绑定一脚本quite点击按钮会让cube隐藏让sphere显示,而按键盘O键会让cube显示让sphere隐藏。在cube上绑定了一个脚本TESTONE。
按钮上绑定的脚本:
[csharp] view plain copy
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上的脚本;
[csharp] view plain copy
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方法。
[csharp] view plain copy
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 () {
}
}
所以当遇到类似的情况就用宝宝的大法吧!哈哈哈!
相关文章推荐
- unity执行顺序问题(如何再次执行start方法)
- Unity的Awake、OnEnable、Start方法的执行顺序
- Java代码块和构造方法执行顺序问题
- Node.js的那些坑(四)——如何让异步并发方法同步顺序执行
- 继承中,static代码块,代码块,构造方法执行顺序问题
- jquery中ajax函数执行顺序问题之如何设置同步
- 问题 Java中的监听器类如何自动选择对应事件的方法执行的?
- Unity事件函数的执行顺序 例如:Awake()/OnEnable()/Start()/FixedUpdate()/Update()/等
- 如何解决网页脚本执行顺序与声明顺序不同的问题
- Java子类继承父类,构造方法的执行顺序问题
- Unity里如何停掉Coroutine, Invoke的函数的执行,以及脚本的Start()和Update()
- 学习总结:java面试方法重写详解,静态代码块和构造方法执行顺序问题
- java中静态代码块 构造代码块 构造方法的执行顺序及注意问题
- java静态代码块 构造代码块 构造方法的执行顺序及注意问题
- Unity的Start和Awake的执行顺序
- java 面试题三十三 子类父类方法执行顺序的问题
- 关于Java new对象构造方法执行顺序 解释恶汉单例模式死循环问题
- 关于如何解决Global.asax中Session_Start不执行的问题
- 父类和子类静态代码块、非静态代码块、构造函数(方法)执行的先后顺序问题
- asp.net关于Page_Load方法和执行js脚本顺序的不同所带来的问题