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,
  • 然后可以拖动其次序,或者修改值
  • 值越小越靠前
相关推荐
前进的李工8 小时前
Agent 学习笔记 05:系统提示词应该怎么写
笔记·学习·prompt·agent·个人开发·few-shot·ai应用开发
正在走向自律9 小时前
【3/5】人工智能训练师 三级/高级工 考证学习方向:从“独立执行”到“设计、归因与全链条负责”
人工智能·学习·人工智能训练师·注方案设计·数据质控负责人·模型评测与调优辅助·ai训练项目交付
CCIE-Yasuo11 小时前
网络安全-学习数据库-Mysql-2
数据库·学习·mysql
tealcwu11 小时前
【Unity高级】Unity URP:构建同时支持 2D 与 3D 场景的项目完全指南
3d·unity·游戏引擎
La Pulga11 小时前
【FreeRTOS源码学习笔记】任务切换
单片机·mcu·学习·嵌入式·freertos·实时操作系统
li星野12 小时前
【学习记录】逻辑分析仪完全入门:从品牌方案到采样率、存储深度的核心概念解析
学习
旖旎夜光12 小时前
【C++ 基础入门】类和对象(上):封装、对象模型与 this 指针
开发语言·c++·笔记·学习
WEI_YANG_JU13 小时前
初中数学教学中合作学习的研究与实践
学习
码农小韩13 小时前
FPGA学习(一)——LED点灯与开发流程
学习·fpga开发·入门·环境配置·仿真·点灯
李长渊哦14 小时前
Qoder 自定义子智能体(Subagent)学习笔记
chrome·笔记·学习