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,
  • 然后可以拖动其次序,或者修改值
  • 值越小越靠前
相关推荐
不灭锦鲤11 小时前
每天学习新的漏洞,react2shell漏洞
学习
悠哉悠哉愿意11 小时前
【物联网学习笔记】TIM
笔记·单片机·嵌入式硬件·物联网·学习
iCxhust11 小时前
C#如何实现textbox文本多行输出 且自动换行输出
开发语言·c#
炽烈小老头13 小时前
【每天学习一点算法 2026/04/17】多数元素
数据结构·学习·算法
2501_9160074713 小时前
从零开始学习iOS开发:Xcode环境配置与项目创建完整指南
ide·vscode·学习·ios·个人开发·xcode·敏捷流程
星幻元宇VR13 小时前
VR动感电动车|以沉浸体验推动交通安全科普新方式
人工智能·科技·学习·安全·生活·vr
魔士于安13 小时前
unity 低多边形 无人小村 木质建筑 晾衣架 盆子手推车,桌子椅子,罐子,水井
游戏·unity·游戏引擎·贴图·模型
RReality13 小时前
【Unity Shader URP】简易卡通着色(Simple Toon)实战教程
ui·unity·游戏引擎·图形渲染·材质
jiayong2313 小时前
第 25 课:给学习笔记页加上搜索、标签筛选和 URL 同步
开发语言·前端·javascript·vue.js·学习
魔士于安13 小时前
unity 骷髅人 连招 武器 刀光 扭曲空气
游戏·unity·游戏引擎·贴图·模型