unity学习14:unity里的C#脚本的几个基本生命周期方法, 脚本次序order等

目录

[1 初始的C# 脚本](# 脚本)

[1.1 初始的C# 脚本](# 脚本)

[1.2 创建时2个默认的方法](#1.2 创建时2个默认的方法)

[2 常用的几个生命周期方法](#2 常用的几个生命周期方法)

[2.1 脚本的生命周期](#2.1 脚本的生命周期)

[2.1.1 其中FixedUpdate 方法 的时间间隔,是在这设置的](#2.1.1 其中FixedUpdate 方法 的时间间隔,是在这设置的)

2.2 c#的基本语法别搞混

[2.2.1 基本的语法](#2.2.1 基本的语法)

[2.2.2 内置的方法名,要求更严格](#2.2.2 内置的方法名,要求更严格)

[2.3 gameobject 挂上脚本](#2.3 gameobject 挂上脚本)

[2.4 测试 Awake 和 OnEnable 和 Start方法](#2.4 测试 Awake 和 OnEnable 和 Start方法)

[2.4 测试这几个全部方法](#2.4 测试这几个全部方法)

[3 unity 使用这些脚本的逻辑](#3 unity 使用这些脚本的逻辑)

[4 project setting / scripts order修改执行次序](#4 project setting / scripts order修改执行次序)


1 初始的C# 脚本

1.1 初始的C# 脚本

下面这个C# 脚本是我刚刚unity里创建的test1.cs

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class test1 : MonoBehaviour

{

// Start is called before the first frame update

void Start()

{

}

// Update is called once per frame

void Update()

{

}

}

1.2 创建时2个默认的方法

  • 应该是因为最常用吧
  • void Start() {} 方法, 开始时执行,
  • void update() {} 方法,每帧执行1次

2 常用的几个生命周期方法

2.1 脚本的生命周期

  • Awake: 最早调用,只会执行1次
  • OnEnable:组件激活后使用,在awake后会执行1次,而且可能会反复执行多次
  • Start:在onEnable, 且一定在update 前执行1次
  • Update:每帧执行1次,理论上帧数越快执行的越快
  • LateUpdate:update后紧接着执行1次
  • FixedUpdate: 只和时间相关,固定间隔时间执行1次,与机器性能无关
  • OnDisable:组件不被激活时使用1次,而且可能会反复执行多次
  • Destory:组件被从gameobject上拿掉,销毁,之后调用1次

2.1.1 其中FixedUpdate 方法 的时间间隔,是在这设置的

2.2 c#的基本语法别搞混

2.2.1 基本的语法

  • 每句话后面要加;
  • 严格的大小写,Awake 不能写成 awake,否则不生效
  • 比如debug.log("") 是错误的,应该是Debug.Log("")

2.2.2 内置的方法名,要求更严格

  • 因为这是系统的内置方法,方法名是内置好的,必须按系统的大小写。C#严格些

2.3 gameobject 挂上脚本

  • 在project里创建1个脚本
  • 然后挂到一个gameobject上才行

2.4 测试 Awake 和 OnEnable 和 Start方法

  • 勾选掉 会导致 OnEnable被反复执行
cs 复制代码
using System.Collections;

using System.Collections.Generic;

using UnityEngine;



public class test1 : MonoBehaviour

{

    void Awake()

    {

    Debug.Log("awake");

    }

    void OnEnable()

    {

    Debug.Log("onEnable");  

    }

    void Start()

    {

    Debug.Log("Start");  

    }

}

2.4 测试这几个全部方法

  • 下面是全部的脚本
cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class test1 : MonoBehaviour
{
    void Awake()
    {
    Debug.Log("awake");
    }
    void OnEnable()
    {
    Debug.Log("onEnable");  
    }
    // Start is called before the first frame update
    void Start()
    {
    Debug.Log("Start");  
    }

    // Update is called once per frame
    void Update()
    {
    Debug.Log("Update");   
    }
    void LateUpdate()
    {
    Debug.Log("LateUpdate");     
    }


    void FixedUpdate()
    {
    Debug.Log("FixedUpdate");     
    }

    void OnDisable()
    {
    Debug.Log("OnDisable"); 
    }

    void Destory()
    {
    Debug.Log("Destory");  
    }


}

反复勾选,脚本前面的勾,可以反复触发 OnEnabel 和 OnDisable

3 unity 使用这些脚本的逻辑

  • step1: (按优先级 )先执行所有脚本的的awake 方法
  • step1: (按优先级 )先执行所有脚本的的start方法
  • 。。。

4 project setting / scripts order修改执行次序

  • project setting / scripts order修改执行次序
  • 如果有多个脚本
  • 需要调整其执行次序
  • 这里点add,
  • 然后可以拖动其次序,或者修改值
  • 值越小越靠前
相关推荐
张小俊_10 分钟前
WPF 跨线程 UI 更新与硬编码赋值引发的 Bug 排查
c#·bug·wpf
y = xⁿ22 分钟前
Redis八股学习日记:数据结构;跳表的底层;Reids的事务机制
数据结构·redis·学习
無斜22 分钟前
【CAPL实用开发】--- CAPL调用 .NET DLL
开发语言·c#·capl·canoe
炽烈小老头29 分钟前
【每天学习一点算法 2026/04/29】最长连续序列
学习·算法
库奇噜啦呼31 分钟前
【iOS】源码学习-类与对象底层原理
学习·ios·cocoa
不灭锦鲤1 小时前
网络安全学习第98天
学习·安全
puamac1 小时前
UcTabWindow 布局多tab,加载编辑器和资源管理器等自定义控件
c#·编辑器·datagridview
星幻元宇VR1 小时前
VR自行车骑行模拟系统|让交通安全教育“骑”进现实
科技·学习·安全·vr
唐青枫1 小时前
别再把增删改查写成一锅粥!C#.NET CQRS 从原理到实战
c#·.net
知识分享小能手1 小时前
R语言入门学习教程,从入门到精通,R语言数值关系数据可视化 - 完整知识点(5)
学习·信息可视化·r语言