首页 > 其他分享 >Unity脚本生命周期

Unity脚本生命周期

时间:2024-08-11 10:49:50浏览次数:12  
标签:脚本 生命周期 void 周期函数 private Unity print using

生命周期函数的概念

所有继承MonoBehavior的脚本,最终都会挂在到GameObject游戏对象上

生命周期函数,就是该脚本对象依附的GameObject对象从出生到消亡整个生命周期中

会通过反射自动调用一些特殊函数

Unity帮助我们记录了一个GameObject对象依附了哪些脚本

会自动的得到这些对象,通过反射去执行一些固定名字的函数

 

生命周期函数

 

生命周期函数的访问修饰符一般为private和protected,因为不需要外部再调用生命周期的函数 都是Unity自己帮助我们调用的

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Lesson01 : MonoBehaviour
{
    // 当对象(自己这个类的对象)被创建时才会调用该生命周期函数
    private void Awake()
    {
        // 在Unity中打印信息的两种方式
        // 1.没有继承MonoBehavior类的时候 (假设没有继承的话,为了挂载这里只能继承)
        Debug.Log("123");
        //Debug.LogError("出错了");
        //Debug.LogWarning("警告!!");

        // 2.继承了MonoBehavior的时候 有一个现成的方法可以使用
        print("1234567");
    }

    // 对于我们来说 想要当一个对象被激活时 进行一些逻辑处理,就可以使用这个函数
    private void OnEnable()
    {
        print("已激活!");
    }

    private void Start()
    {
        print("start");
    }

    // 该函数主要是用于 进行物理更新
    // 它是每一帧 执行的 但是这里的帧 和游戏帧有些不同
    // 它的时间间隔 是可以在project setting中的Time中设置的
    private void FixedUpdate()
    {
        print("FixedUpdate");
    }

    // 主要用于处理游戏核心逻辑更新的一个函数
    private void Update()
    {
        print("Update");
    }

    // 一般这个函数适用于处理摄像机更新相关内容的
    // Update和LateUpdate之间 Unity进了一些处理 处理我们动画相关的更新
    private void LateUpdate()
    {
        print("LateUpdate");
    }

    // 如果我们希望在一个对象被禁用时做一些处理,就可以在该函数中写逻辑
    private void OnDisable()
    {
        print("OnDisable"); 
    }

    private void OnDestroy()
    {
        print("OnDestroy");
    }
}

生命周期函数支持继承多态

下面代码虽然没有继承MonoBehaviour,依然能够挂载到物体上面,因为他的父类是MonoBehaviour的子类,这也体现了多态。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Lesson01Son : Lesson01
{
    protected override void Awake()
    {
        base.Awake();
        print("子类的Awake");
    }
}

 

注:@唐老狮

标签:脚本,生命周期,void,周期函数,private,Unity,print,using
From: https://www.cnblogs.com/WorY2019/p/18353160

相关文章

  • C#动态编辑代码脚本
    C#动态编辑代码脚本一、CSharpCodeProvider提供对C#代码生成器和代码编译器的实例的访问。如果要动态生成VB代码,可以使用VBCodeProvider。CreateCompiler():获取编译器的实例。二、ICodeCompiler定义用于调用源代码编译的接口或使用指定编译器......
  • Nginx日志切分脚本
    因为学习初期都是习惯自己去解决问题没有使用工具切分日志,所以当时写了一个根据天数日志切分脚本,现在记录下。LOG_FILE="/data/log/nginx/filter.access1.log"PROCESSED_LOG_FILE="/data/log/nginx/filter.access.log"month=$(LC_ALL=Cdate"+%b")year=$(date"+%Y")......
  • 安卓鲁班搭档v5.2 Ai视频去重脚本 解决搬运视频重复问题
    收录网站内容的时候,又发现最新版的鲁班搭档!网创圈的兄弟们应该都知道,这是自动去重软件,对视频二创作用还是蛮大的。自媒体人必备的工具,之前分享的被和谐了,这是最新版的,且用且珍惜吧!获取方式在文章末尾哦!1.工具概述视频去重工具是一款专为视频内容创作者设计的工具,它......
  • 10 个令人惊叹的 Python 自动化脚本!
    /01/剪贴板管理器你是否曾发现自己忙于处理多个文本片段,而忘记了自己复制了什么?有没有想过有一个工具可以记录你一天中复制的所有内容?这个自动化脚本可以监控你复制的所有内容,将复制的每个文本无缝地存储在一个时尚的图形界面中,这样你就不必在无尽的标签页中搜索,也不会丢失......
  • shell的相关知识(变量、脚本定义)
    一、shell的相关知识:1、对于shell编程语言大体分为:机器语言、汇编语言、高级语言2、shell变量类型:事先确定数据的存储格式和长度shell变量分为:字符型、数值型数值型又分为:整型、浮点型(在shell中一般不使用浮点型数值进行操作)3、shell:弱类型编程语言强:变量在使用前,必须事先......
  • shell脚本
                          添加用户和组的练习  1、创建一个用户mandriva,其ID号位2002,基本组位distro(组ID位3003),附加组位linux#groupadd-g3003distro;groupaddlinux;useradd-u2002-g3003-Glinuxmandriva 2、创建一......
  • 计算属性-监听属性,生命周期,组件,组件通信之父传子,组件通信之子传父,ref属性
    Ⅰ计算属性-监听属性【一】计算属性:computed#1本质是一个函数,但是当属性用 计算属性是基于它们的依赖进行缓存的计算属性只有在它的相关依赖发生改变时才会重新求值计算属性就像Python中的property,可以把方法/函数伪装成属性#2计算属性和普通函数的区别 ......
  • ./执行shell脚本提示“No such file or directory”
     ./执行shell脚本时提示如下,而关键在前半句,"/bin/sh^M:badinterpreter"错误的解释器。^M符号使得系统无法正确判断shell解释器为/bin/sh。这其实是Windows系统下编辑脚本,换行带来的'\r'。$./test.sh-bash:./test.sh:/bin/sh^M:badinterpreter:Nosuchfileordire......
  • 脚本执行报错 cp: cannot stat '/home/dar/app/log_back'$'\r''/nohup.out': No
    背景针对线上nohup日志较大,需要进行拆分,所以写了一个脚本文件,用来定时执行(或者手动执行)脚本一log_dir="/home/dar/app/log_back"#拷贝日志文件到昨天的log中cp$log_dir/nohup.out$log_dir/nohup-$(date+"%Y%m%d_%H%M%S").log#清空nohup.out日志truncate-s0$log_d......
  • Milvus 实践(2) --- 2.4.x 安装,脚本分析,数据存储解析
    目录背景Milvus2.4.x安装脚本分析etcd组件container_nameimage参数注意问题environmentvolumes实体化command参数注意事项healthcheck参数作用下载minio组件container_nameimage参数注意事项environment参数ports参数注意事项volumes参数实例co......