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,
  • 然后可以拖动其次序,或者修改值
  • 值越小越靠前
相关推荐
samble10 分钟前
从零搭建工业控制系统(二十二):线程安全与并发控制
c#·wpf·并发·mvvm·线程安全·工业控制
UIU1141 小时前
scanf与cout的误区:探究其内部的机制
c++·学习·c#·scanf
风云2 小时前
MiniLog 1.0 GA 发布:零分配、零依赖的 .NET 高性能日志框架
开源·c#·.net·日志·高性能·minilog
慧都小妮子3 小时前
C# 工程图纸数字化入库实战:Aspose.Imaging 自动抠图、多页 TIFF 合卷与坏页容错
图像处理·c#·.net·aspose·tiff·归档·文档管理
zyf1044166 小时前
暑期实践日志 Day48:复盘大纲与知识点对照表,系统汇总整理成果
学习·计算机网络·剪辑·暑期实践·课题任务
谢斯7 小时前
[unity]如何在unity中添加newtonsoft-json
unity·json·游戏引擎
m4Rk_7 小时前
【论文阅读】Agent 记忆机制(61):CFGM——用粗到细的记忆落地贯通经验采集、知识蒸馏与在线纠错
论文阅读·人工智能·学习·开源·github
边境悍匪7 小时前
蜗牛学苑 Java 智能体学习 Day33|AOP 面向切面编程、日志技术思维导图复盘
学习
我是你的开心果7787 小时前
ai全栈软件开发day21(第四阶段喽)
人工智能·学习
samble7 小时前
从零搭建工业控制系统(二十一):状态管理系统——中心状态对象设计
c#·wpf·mvvm·状态管理·工业控制