Unity脚本在层级面板中的执行顺序测试2

上一篇测试了生成顺序对执行顺序的影响,链接:LINK

这篇主要测试一下Awake,OnEnable,Start三个常用消息的循环顺序



先上一个最简单的打印测试代码

void Awake()
    {
        Debug.Log("Awake" + name);
    }

    void OnEnable()
    {
        Debug.Log("OnEnable" + name);
    }

    void Start()
    {
        Debug.Log("Start" + name);
    }

Print Message

测试结果为Awake和OnEnable在第一次循环中,Start在第二次循环中

然后测试一下动态创建时的顺序

public TMP template;

void Start()
{
    var go = Instantiate(template.gameObject);
    print("--Creater Modify--");
    go.SetActive(true);
}

Dynamic Create

Awake和OnEnable优先被调用,连在此之前调用初始化的机会都没有。

不过也有解决方法,将Prefab保存为非激活状态,并在初始化后激活即可:

时间: 2024-11-11 09:57:26

Unity脚本在层级面板中的执行顺序测试2的相关文章

Unity脚本在层级面板中的执行顺序测试4-附加内容

测试4为一些附加内容,后面的各种tips都加在此. 前几篇测试的链接: Unity脚本在层级面板中的执行顺序测试1 http://www.cnblogs.com/hont/p/4298110.html Unity脚本在层级面板中的执行顺序测试2 http://www.cnblogs.com/hont/p/5034419.html Unity脚本在层级面板中的执行顺序测试3 http://www.cnblogs.com/hont/p/5179427.html 1.基本执行顺序 Awake OnEn

Unity脚本在层级面板中的执行顺序测试

测试版本Unity4.6.因为新版本对Transform的排序做了改变,所以不排除旧版本的测试结果不一样.测试时,使用Awake中添加Debug.log(name)来测试顺序 1.不管prefab还是非prefab.执行顺序最高的均是最后创建的.比如先创建GameObject1,后创建GameObject2,后创建GameObject3.执行顺序是 GameObject3 GameObject2 GameObject1 2.通过Resources.Load的Prefab,执行顺序最高的始终是根对

javascript--函数的声明及调用/JS中代码执行顺序

[函数的声明及调用] 1.函数声明格式: function 函数名(参数1,参数2,参数3--){ //函数体 return 结果: } 函数调用的格式: 函数名(参数1的值,参数2的值,--): 事件调用:事件名=函数名(): 2.函数声明的几点强调: ① 函数的声明,必须符合小驼峰法则(首字母小写,之后每个单词首字母大写): ② 参数的列表,可以有参数,可以无参数.分别称为有参函数,无参函数: ③ 声明函数时的参数列表,称为"形参列表"(变量的名): 调用函数时的参数列表,称为&q

C#中Page执行顺序

客户端请求页面1.预初始化(OnPreInit)2.初始化(OnInit)3.完成初始化(OnInitComplete)4.载入ViewState(LoadViewState)5.处理回送数据(IPostBackDataHandler)6.Page_OnPreLoad—>Page_OnLoad7.回发更改通知(RaisePostDataChangedEvent)8.处理回发事件(RaisePostBackEvent)9.Page_OnLoadComplete10.预呈现(OnPreRender)

【JavaScript】JavaScript脚本代码的位置及在页面中的执行顺序

三.如何改变Javascript在页面的执行顺序 利用onload <script type="text/javascript">window.onload = f; function f(){ alert(1); } alert(2);</script>输出值顺序是 2.1. 需要注意的是,如果存在多个winodws.onload的话,只有最后有一个生效,解决这个办法是: window.onload = function(){f();f1();f2();...

JS在html中的执行顺序

一般来说在html页面中嵌入Javascript的方式有下面几种:1.放在页面的<script></script>标记之间:2.由<script>标记的src属性引入外部的js文件:3.放在页面元素的事件处理程序中,比如button的onclick事件中:4.作为URL的主体,使用Javascript:协议,比如<a href="window.open("about:blank");"></a>;5.Jav

static静态块 构造方法 普通语句块 在java中的执行顺序

1 public class Par { 2 3 public Par() { 4 System.out.println("父类--constructor"); 5 } 6 7 static { 8 System.out.println("父类--statc"); 9 } 10 11 { 12 System.out.println("父类普通代码块"); 13 } 14 } 15 16 public class Sub extends Par {

java中代码执行顺序

之前面试的时候有一道题,是考java的代码执行顺序的. 在大三的时候学习java语言的时候有说,但是在实际工作中用的比较少,所以在这里重新记录复习一下. 比如下面这段代码: class helloA{ public helloA(){ System.out.println("helloA"); } { System.out.println("I'm A"); } static { System.out.println("Static A"); }

MySQL中语句执行顺序

当一个查询语句同时出现了where,group by,having,order by的时候,执行顺序和编写顺序是: 1.执行where xx对全表数据做筛选,返回第1个结果集. 2.针对第1个结果集使用group by分组,返回第2个结果集. 3.针对第2个结果集中的每1组数据执行select xx,有几组就执行几次,返回第3个结果集. 4.针对第3个结集执行having xx进行筛选,返回第4个结果集. 5.针对第4个结果集排序. select count(user_id) from (sel