当前位置: 首页 > news >正文

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

目录

1 初始的C# 脚本

1.1 初始的C# 脚本

1.2 创建时2个默认的方法

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

2.1 脚本的生命周期

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

2.2  c#的基本语法别搞混

2.2.1 基本的语法

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

2.3  gameobject 挂上脚本

2.4 测试 Awake 和  OnEnable  和 Start方法

2.4 测试这几个全部方法

3 unity 使用这些脚本的逻辑

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被反复执行
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 测试这几个全部方法

  • 下面是全部的脚本
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 updatevoid Start(){Debug.Log("Start");  }// Update is called once per framevoid 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,
  • 然后可以拖动其次序,或者修改值
  • 值越小越靠前

http://www.lryc.cn/news/517399.html

相关文章:

  • pytorch 比较两个张量的是否相等的函数介绍
  • MySQL Windows 11 的 MySQL 配置文件 (my.ini) 路径查找指南
  • 06-RabbitMQ基础
  • 关于markdown实现页面跳转(调查测试:csdn(博客编写效果、发布效果)、typroa中md转pdf的使用情况)
  • el-dialog 组件 在<style lang=“scss“ scoped>标签
  • 《深度学习梯度消失问题:原因与解决之道》
  • 中高级运维工程师运维面试题(十一)之 Docker
  • Gitee图形界面上传(详细步骤)
  • WebSocket 实现指南
  • TRELLIS - 生成 3D 作品的开源模型
  • uni-app图文列表到详情页面切换
  • ros2-3.4话题通信最佳实践
  • Vmware安装centos
  • 51单片机——按键实验
  • QT c++ 自定义按钮类 加载图片 美化按钮
  • Django:构建高效Web应用的强大框架
  • 代码随想录算法【Day11】
  • [SeaTunnel] [MySql CDC] Generate Splits for table db.table error
  • Spring Boot | 基于MinIO实现文件上传和下载
  • 企业手机号搜索API接口
  • VirtualBox Main API 学习笔记
  • [Linux]Mysql9.0.1服务端脱机安装配置教程(redhat)
  • uniapp--HBuilder开发
  • 计算机毕业设计学习项目-P10080 基于springboot+vue的社团管理系统的设计与实现
  • with as提高sql的执行效率
  • 【银河麒麟高级服务器操作系统实例】tcp半链接数溢出分析及处理全过程
  • 计算机毕业设计Python中华古诗词知识图谱可视化 古诗词智能问答系统 古诗词数据分析 古诗词情感分析模型 自然语言处理NLP 机器学习 深度学习
  • 分布式ID生成-雪花算法实现无状态
  • 【问题】配置 Conda 与 Pip 源
  • Zookeeper是如何保证事务的顺序一致性的?