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. Standard C 之 math.h和float.h

    对于C Standard Library 可以参考:http://www.acm.uiuc.edu/webmonkeys/book/c_guide/ 或者 http://www.cplusplus.c ...

  2. Let's Encrypt申请免费SSL证书

    1.https的作用 安全,防止网站被劫持,数据被修改 2.Let's Encrypt是什么 Let's Encrypt是一个证书授权机构(CA),可以从Let's Encrypt获得网站域名的免费证 ...

  3. iOS开发-按钮的基本使用

    // //  ViewController.m //  05-用代码创建按钮 // //  Created by vic fan on 2017/7/30. //  Copyright © 2017年 ...

  4. mysql load数据第一列丢失

    mysql load数据第一列丢失 问题描述 MySQL表的结构如下: mysql> desc cms_msg_test_3; +----------------+--------------- ...

  5. 在java代码中,用xslt处理xml文件

    http://blog.csdn.net/zhou_lei/article/details/2661735 ********************************************** ...

  6. MySQL索引的维护与优化——查找重复及冗余索引

    方法一:通过MySQL的information_schema数据库 查找重复与冗余索引 SELECT a.table_schema AS '数据库', a.table_name AS '表名', a. ...

  7. 2017年研究生数学建模竞赛-E题 MATLAB 作战区域道路示意图

    MATLAB 画区域作战图 clear load('output_path1.mat') k = 1:130; gplot(edge(k,k),loc(k,:),'c-') title('作战区域道路 ...

  8. Python3求笛卡尔积的两种方法

    [本文出自天外归云的博客园] 电影异次元杀阵三部曲中密室线索反复出现笛卡尔积的运用.百度百科: 笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为 ...

  9. NLTK和jieba这两个python的自然语言包(HMM,rnn,sigmoid

    HMM(Hidden Markov Model,隐马尔可夫模型) CRF(Conditional Random Field,条件随机场), RNN深度学习算法(Recurrent Neural Net ...

  10. jsPatch.qq.com呵呵

    jsPach.qq.comhtml, body {overflow-x: initial !important;}html { font-size: 14px; } body { margin: 0p ...