Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Unity 基础 - 脚本的生命周期

Unity 基础 - 脚本的生命周期

作者头像
hrscy
发布于 2018-08-30 04:31:43
发布于 2018-08-30 04:31:43
78400
代码可运行
举报
文章被收录于专栏:hrscyhrscy
运行总次数:0
代码可运行

新建一个 C# 脚本,在 MonoDevelop 中打开脚本,我们会发现,只要在 Unity 中国年创建的脚本,默认都是集成自 MonoBehaviour的,像这种集成自MonoBehaviour的类或者脚本称之为运行时类,继承自MonoBehaviour的类都不能手动进行实例化,当然在脚本中也可以创建一个类不继承MonoBehaviour

脚本创建完成后,系统会默认创建两个方法,分别是Start ()Update (),但是这两个方法并不是 MonoBehaviour 中定义的方法,这两个方法是通过反射调用的一些事件,会在特定的时间调用,由系统决定,方法名一定不能写错,方法名写错,系统并不会报错。这些方法定义了一个脚本从被加载到被销毁的过程中脚本的生命周期,除了这两个方法,还有几个方法,分别是 Awake()OnEnable()LateUpdate()OnDisable()OnDestroy(),包括还有其他的方法,比如说OnGUI()FixedUpdate()。运行脚本可以查看输出,Awake()OnEnable()OnDisable()OnDestroy()只输出一次,Start ()LateUpdate()Update ()会循环打印。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using UnityEngine;
using System.Collections;

public class test : MonoBehaviour {

    // Use this for initialization
    //在第一次调用 Update 之前会调用一次
    //有时也会在 Start 方法中做一些初始化操作
    void Start () {
        //初始化 private 成员
        print ("Start");
    }

    // Update is called once per frame
    // 每帧调用一次,接近 60帧/s
    void Update () {
        print ("Update");
    }
    //每当脚本被加载时调用
    //习惯在  Awake 中做一些初始化操作
    void Awake() {
        //初始化 public 成员
        print ("Awake");
    } 
    //每次激活脚本时都会调用
    void OnEnable () {
        print ("OnEnable");
    }
    // 在 update 方法调用完之后调用,一般来处理画面的逻辑
    void LateUpdate () {
        print ("LateUpdate");
    }
    // 取消激活状态后调用
    void OnDisable () {
        print ("OnDisable");
    }
    // 脚本被销毁时调用一次
    // 比如游戏中的怪物死亡之后,会掉落一些装备,可以在 Destroy 里写相应的逻辑
    void OnDestroy (){
        print ("OnDestroy");
    }
    // 基本处于激活状态,持续调用的方法,一般用来做编辑器扩展或 Debug 时使用, IMGUI 代码也要写在 OnGUI 中
    void OnGUI () {
        print ("OnGUI");
    }
    // 以固定的频率调用,不会受到图像刷新速率的影响,一般把处理物理的代码放到 FixedUpdate 中
    void FixedUpdate() {
        print ("FixedUpdate");
    }
}

//可以创建一个不继承自MonoBehaviour的类
public class A {
    public void test() {
        //不能使用 new 手动创建一个MonoBehaviour对象
        //NewBehaviourScript *script =new NewBehaviourScript();
    }
}

脚本的生命周期

运行脚本

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016.05.19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
unity3d之脚本生命周期
脚本生命周期 执行顺序如下: 各个函数解释如下: 名称 触发时机 用途 Awake 脚本实例被创建时调用 用于游戏对象的初始化,注意Awake的执行早于所有脚本的Start函数 OnEnable 当对象变为可用或激活状态时被调用 用途 Start Update函数第一次运行之前调用 用于游戏对象的初始化 Update 每帧调用一次 用于更新游戏场景和状态 FixedUpdate 每个固定物理时间间隔调用一次 用于物理状态的更新 LateUpdate 每帧调用一次(在update之后调用) 用于更新游戏场景和
李小白是一只喵
2020/11/12
6420
unity3d之脚本生命周期
零基础入门 9: Unity脚本的生命周期
因为接下来的几篇分享,可能会开始编写脚本,所以索性用这篇来介绍下Unity脚本的常用生命周期函数。
韩东吉
2018/10/19
1.1K0
零基础入门 9: Unity脚本的生命周期
一、事件函数的执行顺序(脚本的生命周期)
上图概括了unity如何在脚本的生命周期内对事件函数进行排序以及重复执行这些事件函数。
酱紫安
2020/07/20
2.6K0
Unity基础(14)-事件系统
1.Awake:用于在游戏开始之前初始化变量或游戏状态。在脚本整个生命周期内它仅被调用一次.Awake在所有对象被初始化之后调用,所以你可以安全的与其他对象对话或用诸如GameObject.FindWithTag()这样的函数搜索它们。每个游戏物体上的Awake以随机的顺序被调用。因此,你应该用Awake来设置脚本间的引用,并用Start来传递信息Awake总是在Start之前被调用。它不能用来执行协同程序。
孙寅
2020/06/02
1.7K0
unity2d3d结合_unity3d脚本编程与游戏开发
3、依次选择Data –> Resources –> ScriptTemplates
全栈程序员站长
2022/10/02
1.6K0
unity2d3d结合_unity3d脚本编程与游戏开发
Unity3D学习笔记(一)
1、解释 游戏对象(GameObjects)和 资源(Assets)的区别与联系。
梦飞
2022/06/23
9020
Unity3D学习笔记(一)
Unity3D MonoBehaviour的生命周期(lifecycle)
官方的事件函数的执行顺序中有详解(Link:Execution Order of Event Functions)
meteoric
2018/11/20
2.1K0
【Unity】随心记
组件的生命周期 //使用 Awake 来代替构造函数进行初始化,因为组件的序列化状态在构造时是未定义的。 //与构造函数一样,仅调用 Awake 一次。 //调用时间:最早调用,所以一般可以在此实现单例模式 void Awake(){} //调用时间:组件激活后调用,在Awake后调用一次 OnEnable(){} //初始化函数,在所有Awake函数运行完之后(一般是这样,但不一定)在所有Update函数前系统自动条用。 //一般用来给变量赋值。 //调用时间:在UpDate之前调用一次,在OnEn
鸡先生
2023/03/11
2830
Unity2D开发入门-自定义代码片段
在任意地方创建一个文件夹,最好是你不去经常移动的地方,文件夹是用来存放你自定义的代码块的文件夹。
码客说
2023/07/26
3050
Unity2D开发入门-自定义代码片段
Unity3D之MonoBehaviour
Unity3D中的MonoBehaviour是一种基于组件的编程架构,用于开发游戏和应用程序。它是Unity引擎中用于创建行为的基类之一,并且可以让你通过重写其方法来定义对象在游戏运行时的行为。
叶茂林
2023/07/30
3930
Unity学习笔记-脚本
1.在桌面找到unity图标,右键属性打开 2.点击打开文件所在位置 3.在Editor文件夹下,依次进入Editor->Data->Resources->ScriptTemplates中 4.修改"81-C# Script-NewBehaviourScript.cs.txt"文件的权限,使它可修改 5.用vs打开"81-C# Script-NewBehaviourScript.cs.txt"文件(用文本打开也行,但可能出现编码问题) 6.把它修改为自己需要的样子保存即可
六月丶
2022/12/26
7090
Unity学习笔记-脚本
【Unity3D 灵巧小知识点】☀️ | Unity脚本生命周期
Unity3d 脚本从唤醒到销毁有着一套比较完整的生命周期,系统自带的几个重要的方法如下:
呆呆敲代码的小Y
2021/09/10
2820
游戏优化系列三:Unity游戏的黑屏问题解决方法
大家好,我叫Jack冯; 本人20年硕士毕业于广东工业大学,于2020年6月加入37手游安卓团队;目前主要负责海外游戏发行安卓相关开发。
37手游安卓团队
2020/12/16
6.2K0
游戏优化系列三:Unity游戏的黑屏问题解决方法
【Unity面试篇】Unity 面试题总结甄选 |Unity基础篇 | ❤️持续更新❤️
答:Awake —> OnEnable —> Start —> FixedUpdate —>Update —> LateUpdate—> OnGUl —> OnDisable —> OnDestroy
呆呆敲代码的小Y
2023/07/24
2.6K0
【Unity面试篇】Unity 面试题总结甄选 |Unity基础篇 | ❤️持续更新❤️
Unity开发入门-环境安装及素材导入
https://docs.unity3d.com/cn/current/Manual/Input.html
码客说
2023/07/24
4300
Unity开发入门-环境安装及素材导入
Cocos Creator之组件的生命周期
用户只要定义特定的回调函数,Creator 就会在特定的时期自动执行相关脚本,用户不需要手工调用它们。
李小白是一只喵
2021/04/28
1.3K0
Cocos Creator之组件的生命周期
unity3d自学教程_3D技巧
Unity3D软件是由Unity Technologies公司提供的综合开发环境,主要面向游戏开发人员、虚拟现实设计师等,可用于创建诸如三维视频游戏、建筑可视化、实时三维动画等类型的多媒体内容,并支持这些内容在Windows、iOS、Android等多种平台的发布,功能非常强大。
全栈程序员站长
2022/09/22
3.3K0
unity3d自学教程_3D技巧
Unity面试刷题库
答:在构造函数如果有public修饰的静态构造函数时会报:“静态构造函数中不允许出现访问修饰符”,如果什么修饰符都不加的话不会报错,静态构造函数一般是起初始化作用。
孙寅
2020/06/02
4.1K0
Unity3d开发
JavaScript之前已经又所了解,但是在之前也只是在网页的基础上进行学习在网页上如何使用JavaScript脚本进行编译
用户8447427
2022/08/18
9.1K0
Unity3d开发
Unity3D学习笔记第一课
第一课程: 1.Unity类名必须与文件名保持一致 2.讲属性设置为public可以在Unity中访问 public float speed; // Use this for initialization void Start () { } // Update is called once per frame void Update () { //获取左右方向键的的值(范围为-1到1) float amtToMove = Input.GetAxis ("Horizontal
hbbliyong
2018/03/06
1K0
相关推荐
unity3d之脚本生命周期
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文