2016-09-08 20:13 2084人阅读 评论(1) 收藏 举报
 分类:
unity3D(66) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

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

Look:

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

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

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


 

按钮上绑定的脚本:

  1. using UnityEngine;
  2. using System.Collections;
  3. public class quite : MonoBehaviour {
  4. public GameObject[] GO;
  5. // Use this for initialization
  6. void Start () {
  7. }
  8. // Update is called once per frame
  9. void Update () {
  10. if (Input.GetKey(KeyCode.O))//按键盘O键
  11. {
  12. // Debug.Log("cube出现");
  13. GO[1].SetActive(false);
  14. GO[0].SetActive(true);
  15. }
  16. }
  17. public void Clickthisbutton()//点击按钮
  18. {
  19. //  Debug.Log("球出现");
  20. GO[0].SetActive(false);
  21. GO[1].SetActive(true);
  22. //  Application.Quit();
  23. }
  24. }

 

然后再看在cube上的脚本;

  1. using UnityEngine;
  2. using System.Collections;
  3. public class TESTONE : MonoBehaviour {
  4. void Awake()
  5. {
  6. Debug.Log("Awake---1cube");
  7. }
  8. void OnEnable()
  9. {
  10. Debug.Log("OnEnable---1cube");
  11. }
  12. // Use this for initialization
  13. void Start () {
  14. Debug.Log("START--1cube");
  15. }
  16. // Update is called once per frame
  17. void Update () {
  18. }
  19. }

 

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

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

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

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

  1. using UnityEngine;
  2. using System.Collections;
  3. public class TESTONE : MonoBehaviour {
  4. public void Awake()
  5. {
  6. Debug.Log("Awake---1cube");
  7. }
  8. void OnEnable()
  9. {
  10. Debug.Log("OnEnable---1cube");
  11. Start();
  12. Awake();
  13. }
  14. // Use this for initialization
  15. public void Start () {
  16. Debug.Log("START--1cube");
  17. }
  18. // Update is called once per frame
  19. void Update () {
  20. }
  21. }

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

unity执行顺序问题(如何再次执行start方法)的更多相关文章

  1. hive高阶1--sql和hive语句执行顺序、explain查看执行计划、group by生成MR

    hive语句执行顺序 msyql语句执行顺序 代码写的顺序: select ... from... where.... group by... having... order by.. 或者 from ...

  2. Unity脚本执行顺序自研框架

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/52372611 作者:car ...

  3. Unity3D中脚本的执行顺序和编译顺序

    http://www.cnblogs.com/champ/p/execorder.html 在Unity中可以同时创建很多脚本,并且可以分别绑定到不同的游戏对象上,它们各自都在自己的生命周期中运行.与 ...

  4. 【转】Unity3D中脚本的执行顺序和编译顺序(vs工程引用关系)

    http://www.cnblogs.com/champ/p/execorder.html 在Unity中可以同时创建很多脚本,并且可以分别绑定到不同的游戏对象上,它们各自都在自己的生命周期中运行.与 ...

  5. (转)Unity3D中脚本的执行顺序和编译顺序(vs工程引用关系)

    自:http://www.cnblogs.com/champ/p/execorder.html 在Unity中可以同时创建很多脚本,并且可以分别绑定到不同的游戏对象上,它们各自都在自己的生命周期中运行 ...

  6. 【转】Unity3D中脚本的执行顺序和编译顺序

    支持原文,原文请戳: Unity3D中脚本的执行顺序和编译顺序 在Unity中可以同时创建很多脚本,并且可以分别绑定到不同的游戏对象上,它们各自都在自己的生命周期中运行.与脚本有关的也就是编译和执行啦 ...

  7. final、static、代码块、静态代码块、内部类、代码执行顺序

    final final域使得确保初始化安全性(initialization safety)成为可能,初始化安全性让不可变形对象不需要同步就能自由地被访问和共享 作用在类上               ...

  8. java中的异常以及 try catch finally以及finally的执行顺序

    java中的 try.catch.finally及finally执行顺序详解: 1.首相简单介绍一下异常以及异常的运行情况: 在Java中异常的继承主要有两个: Error和Exception 这两个 ...

  9. js函数和变量的执行顺序【易错】

    js函数和变量的声明与执行顺序 一.函数执行顺序 1.正常顺序 function f(){ alert(2); } f(); //alert 2 所有浏览器都能测试通过. 2.倒序调用 f(); // ...

  10. java中return与finally的执行顺序

    可不能小看这个简单的 finally,看似简单的问题背后,却隐藏了无数的玄机.接下来我就带您一步一步的揭开这个 finally 的神秘面纱. 问题分析 首先来问大家一个问题:finally 语句块一定 ...

随机推荐

  1. (原创)C++11改进我们的程序之右值引用

    本次主要讲c++11中的右值引用,后面还会讲到右值引用如何结合std::move优化我们的程序. c++11增加了一个新的类型,称作右值引用(R-value reference),标记为T & ...

  2. JVM垃圾回收--年轻代、年老点和持久代

    关键字约定 Young generation –>新生代 Tenured / Old Generation –>老年代 Perm Area –>永久代 年轻代: 所有新生成的对象首先 ...

  3. Beginning SDL 2.0(3) SDL介绍及BMP渲染

    SDL是一个跨平台的多媒体库.为了实现跨平台,SDL提供了一个简单的界面库抽象,比如提供了SDL_Window用于表示窗口句柄,SDL_Surface.SDL_Texture.SDL_Renderer ...

  4. TortoiseSVN checkout 之后图标(绿色勾之类的)没有显示出来的问题

    http://blog.csdn.net/xigu_233/article/details/44595547 ********************************************* ...

  5. hadoop的核心思想【转】

    [转自]:http://www.superwu.cn/2014/01/10/963/ 1.1.1. hadoop的核心思想 Hadoop包括两大核心,分布式存储系统和分布式计算系统. 1.1.1.1. ...

  6. JAVA-JSP内置对象之request对象的其他方法

    相关资料:<21天学通Java Web开发> request对象的其他方法1.request对象除了可以用来获得请求参数,还可以用来获得HTTP标头及其他信息. 方法           ...

  7. Centos 6.5 安装Xrdp 远程桌面

    1. 安装源: Once you determine your architecture then you can install the correct EPEL repository with t ...

  8. Linux中的守护进程——supervise

    絮叨 supervise是daemontools的一个工具,可以用来监控管理Unix下的应用程序运行情况,在应用程序出现异常时,supervise可以重新启动指定程序. 本文介绍一下supervise ...

  9. Django: AttributeError: 'str' object has no attribute 'resolve'

    再次重温Django的时候,遇到了这个错误.看了页面上,没啥有用的信息.遂谷歌一下,原来是一个很低级的错误:It's because you forgot to type the word " ...

  10. 各种开源协议介绍 BSD、Apache Licence、GPL V2 、GPL V3 、LGPL、MIT_转

    转自:各种开源协议介绍 BSD.Apache Licence.GPL V2 .GPL V3 .LGPL.MIT 现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的 ...