unity的函数生命周期以及静态生成方法

这篇具有很好参考价值的文章主要介绍了unity的函数生命周期以及静态生成方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前段时间毕业了,到处跑着玩,玩傻了之后入职了又摸了一个多月鱼~收收心了,近期的学习计划是下半年入门图形学,九月中旬把线性代数学完,所以unity和游戏开发的文章还是很少更新了,等后期学习图形学再慢慢更新和学习记录吧,中间工作中遇到的一些问题还是会记录一下给和我一样刚入职场的小菜鸡一些帮助吧。
今天在工作的时候通过一个脚本中的方法来调用另一个方法中的某个静态方法生成场景或对象,但是很好奇这样调用代码的时候后者的函数生命周期和静态方法的顺序和相互之间有没有影响,带着这样的疑问今天就想通过日志打印来记录一下这样一个问题的答案。
unity的函数生命周期以及静态生成方法

两个脚本分别是childScript、buttonscript;第一个作为静态生成方法挂载到要生成的cube上去,buttonscript挂载到按钮来达到动态生成和隐藏效果以便打印日志和观察状态

public class buttonscript : MonoBehaviour
{
    public GameObject Cube;
    bool isSetActive = false;
    void Start()
    {
    }
    public void onClick()
    {
        if (isSetActive == false)
        {
            childScript.SetData(Cube);
        }
        else
        {
            Cube.SetActive(false);

        }
        isSetActive = !isSetActive;
    }
}
public class childScript : MonoBehaviour
{
    public static int meathodSum = 0; 
    private void Awake()
    {
        meathodSum++;
        Debug.Log("there  is  Awake  meathod!"+ meathodSum);
    }
    private void OnEnable()
    {
        meathodSum++;
        Debug.Log("there is  OnEnable meathod!" + meathodSum);   
    }
    // Start is called before the first frame update
    void Start()
    {
        meathodSum++;
        Debug.Log("there is Start meathod!" + meathodSum);    
    }

    public static void SetData(GameObject cube)
    {
        meathodSum++;
        Debug.Log("there is  SetData  Meathod before setactive !" + meathodSum);
        cube.SetActive(true);
        Debug.Log("there is  SetData  Meathod behind setactive!" + meathodSum);
    }
}

运行程序前分别将Cube设置为隐藏和显示,并通过按钮来调用静态方法切换状态,以此来观察日志的函数顺序。首先隐藏的时候运行时日志打印内容为空unity的函数生命周期以及静态生成方法
按下一次按钮时
unity的函数生命周期以及静态生成方法
再次按下按钮关闭后,再次打开
unity的函数生命周期以及静态生成方法
通过日志显而易见,在预制体或游戏对象处于关闭状态时任何方法都不会运行,当从外部调用静态方法生成时,最先走的是SetData方法,所以我们在书写代码时总是喜欢通过setdata来传参传入数据给chidscript脚本实例化初始化游戏对象或场景,在数据都赋值和初始化完成后,setactive设置为true,此时会直接运行awake,也就是第一次生成显示的时候awake是最先的,其次是oneable,而setdata运行完之后,第一帧之前才是start,这样的日志打印逻辑顺序就很清晰了。 接下来继续看关闭打开之后的日志,即使我们重新打开或者显示之后,但是由于cube已经在第一次生成过了,我们并没有销毁而是隐藏所以awake和该物体生成后的第一帧之前的start就不会再运行了,但是oneable确实每次调用,但是这里就有一个疑问,oneable是因为setactive为true了才调用,还是默认就回调用呢? 那我们试验一下就好在childscript中的setdata方法加一个
if(meathodSum<3)
cube.SetActive(true);
这样就能保证第二次true时oneable有没有和setactive为true有关了
unity的函数生命周期以及静态生成方法
很明显oneable就是在每次显示的时候会调用,这样我们就把awake、oneable和start以及静态生成方法setdata的运行逻辑理解了,我们就可以根据这四个方法每个人不同的运行逻辑顺序以及特点来完成我们一些奇奇怪怪的需求功能了~
好了,今天就记到这吧,希望能给大家一点启发,学线代了5555555(高数挂过科的菜鸡落泪)文章来源地址https://www.toymoban.com/news/detail-436049.html

到了这里,关于unity的函数生命周期以及静态生成方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • K8s: 关于Kubernetes中的Pod的生命周期(状态)以及生命周期的钩子函数处理

    pod 的生命周期 1 ) pod 几种常用状态 1.1 )Pending(挂起) Pod 已被 Kubernetes 系统接受,但有一个或者多个容器尚未创建亦未运行 此阶段包括等待 Pod 被调度的时间和通过网络下载镜像的时间。 1.2 )Running(运行中) Pod 已经绑定到了某个节点,Pod 中所有的容器都已被创建 至少有

    2024年04月22日
    浏览(57)
  • Unity中常见的脚本生命周期函数及顺序

    以下是Unity中常见的脚本生命周期函数的顺序: Awake():当对象被创建时调用,用于初始化对象的引用和状态。 OnEnable():在对象变为激活状态时调用,用于进行初始化操作。 Start():在 Awake 之后调用,用于在对象被启用前进行初始化操作。 FixedUpdate():固定的时间间隔(一般

    2024年02月06日
    浏览(40)
  • 微信小程序的生命周期函数有哪些,以及执行过程?

    目录 1、应用的生命周期  2、页面的生命周期 3、组件的生命周期  4、执行顺序  小程序中,生命周期主要分成了三部分: ① 应用的生命周期        ② 页面的生命周期        ③ 组件的生命周期 1、应用的生命周期  在 app.js 里面调用,通过 App(Object) 函数用来注册一个小

    2024年02月08日
    浏览(46)
  • 【Unity】认识常用的生命周期函数(Awake、Start、Update...)

    游戏的本质就是一个死循环 每一次循环都会处理游戏逻辑 并 更新一次游戏画面 之所以能看到画面在动 是因为 切换画面速度达到一定速度时 人眼就会认为画面是动态且流畅的 一帧就是执行了一次循环 Unity底层已经封装好了这个死循环 我们只需要利用Unity的生命周期函数的

    2024年02月02日
    浏览(31)
  • 微信小程序中的所有生命周期钩子函数及其使用方法

    onLaunch(options) :小程序初始化时触发,全局只触发一次。 onShow(options) :小程序启动或从后台进入前台显示时触发。 onHide() :小程序从前台进入后台时触发。 onError(error) :小程序发生脚本错误或 API 调用失败时触发。 onLoad(options) :页面加载时触发,可以获取页面参数。 onS

    2024年02月09日
    浏览(41)
  • 微信小程序——生命周期,生命周期的分类,页面生命周期,生命周期函数的分类,应用的生命周期函数,页面的生命周期函数,wxs脚本概述

    生命周期( Life Cycle )是指一个对象从创建-运行-销毁的整个阶段,强调的是一个时间段。 例如: .张三出生,表示这个人生命周期的开始 .张三离世,表示这个人生命周期的结束 .中间张三的一生,就是张三的生命周期 我们可以把每个小程序运行的过程,也概括为生命周

    2024年02月01日
    浏览(58)
  • Ionic4 生命周期钩子函数和angular生命周期钩子函数介绍

    Ionic 4(以及之后的 Ionic 版本)使用了 Angular 生命周期钩子,因为 Ionic 是基于 Angular 构建的。因此,Ionic 4 中的生命周期与 Angular 组件生命周期非常相似。以下是一些常见的 Ionic 4 生命周期钩子: ionViewDidLoad : 在页面加载完成后触发。通常用于执行一次性的初始化任务。不推

    2024年02月07日
    浏览(50)
  • 什么是Vue中的生命周期钩子函数?有哪些主要的生命周期钩子函数?如何监听DOM事件?

    Vue中的生命周期钩子函数是指在Vue实例创建、数据绑定、组件挂载等生命周期阶段中,可以执行一些特定操作的函数。这些函数在Vue实例的不同生命周期阶段被调用,可以帮助开发者更好地控制Vue实例的行为。 Vue的生命周期钩子函数包括: beforeCreate :在Vue实例创建之前调用

    2024年02月12日
    浏览(55)
  • Unity-Unity脚本生命周期

    Unity脚本生命周期是指在Unity游戏引擎中,脚本在运行过程中所经历的各个阶段。这些阶段包括:初始化、更新、固定更新、销毁等。下面我们来详细讲解一下Unity脚本生命周期的各个阶段。 1. Awake Awake是脚本的初始化阶段,当脚本被实例化时,Awake函数会被调用且只执行一次

    2024年02月14日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包