Unity3d中mono方法生命周期及执行顺序小结(一)

第一次写博客,如有不足之处,请在下方留言,谢谢。

Mono自带主要方法:Awake、OnEnable、Rest、Start、FixedUpdate、Update、LateUpdate、OnGUI、OnApplicationPause、OnApplicationQuit、OnDisable、OnDestroy

从Unity Manual中给出的Mono自带方法的生命周期结构图如下(分三块上传):
这里写图片描述
这里写图片描述
这里写图片描述
单个Mono方法执行如上图。
而多个Mono之间的方法的执行顺序呢?以前有看过不记得名的大神的Blog中有提到过,多个Mono之间的方法执行顺序是先统一执行Awake,然后依次下去。
但是其中Mono与Mono之间谁先谁后呢?为此我做了个小实验:
以下有2个Mono,3个go:

public class MonoA : MonoBehaviour
{

    void Awake()
    {
        Debug.Log("this is Awake of MonoA!" + gameObject.name);
    }
    void Start()
    {
        Debug.Log("this is Start of MonoA!" + gameObject.name);
    }

    bool isPrint = false;
    void Update()
    {
        if (!isPrint)
        {
            Debug.Log("this is Update of MonoA!" + gameObject.name);
            isPrint = true;
        }
    }
}
public class MonoB : MonoBehaviour
{

    void Awake()
    {
        Debug.Log("this is Awake of MonoB!" + gameObject.name);
    }
    void Start()
    {
        Debug.Log("this is Start of MonoB!" + gameObject.name);
    }

    bool isPrint = false;
    void Update()
    {
        if (!isPrint)
        {
            Debug.Log("this is Update of MonoB!"+gameObject.name);
            isPrint = true;
        }
    }
}

其中在Hierarchy中的顺序如下:
CubeA->MonoA,CubeB->MonoB,CubeC->MonoA,MonoB
goC上面悬挂了两个脚本,Inspector中情况如下
OK,一切准备就绪,Play……
得出运行结果如下:
这里写图片描述
由此不难得出,Mono中自带方法执行顺序,是自下至上的,Inspector中也是自下至上,与Hierarchy中的渲染顺序相反,在图层最上面的挂的脚本开始执行,在元素上最后的脚本先执行。

写在最后,一直在用Unity3d做开发,以前从来没有去深究过这些,最近受到一些触发,决心将以前一些知其然不知其所以然的知识重新梳理一遍,
希望有所进步,如果有朋友看到,有不当之处或有所不足之处,望能之处。
计划先过一遍Manual,然后过一遍UI源码,然后引擎源码。
所谓不积跬步无以至千里,以此共勉。

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值