unity3d脚本生命周期

脚本的生命周期

代码

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

public class NewBehaviourScript : MonoBehaviour
{
    // 只会执行一次 无论脚本是否激活,都会被执行。前提是脚本所在对象必须是激活状态
    private void Awake()
    {
        Debug.Log("Awake");
    }
    // 脚本激活或者脚本所依附的对象被激活时执行
    private void OnEnable()
    {
        Debug.Log("OnEnable");
    }
    // 只会执行一次 且只能 在脚本处于激活状态或者脚本第一次被激活时执行
    // Start is called before the first frame update
    void Start()
    {
        Debug.Log("Start");
    }
    // 固定帧率刷新 不受游戏帧率影响,默认帧间隔为0.02s,可以在projectseting-Time-fixed timestep中设置
    private void FixedUpdate()
    {
        Debug.Log("FixedUpdate");
    }

    // Update is called once per frame
    void Update()
    {
        Debug.Log("Update");
    }
    // 在update之后执行
    private void LateUpdate()
    {
        Debug.Log("LateUpdate");
    }
    // 脚本取消激活时或者脚本所依附的对象取消激活时执行
    private void OnDisable()
    {
        Debug.Log("OnDisable");
    }
    // 脚本所依附的对象被销毁时执行
    private void OnDestroy()
    {
        Debug.Log("OnDestroy");
    }
}

u3d主线程框架运行图
在这里插入图片描述

代码分析

说明一点脚本必须继承monobehaviour ,脚本才能作为组件挂在对象上并且具有这些生命周期函数。
在代码的注释中已经有详细的介绍,这里说明一下FixedUpdate ,他是固定帧间隔的函数,执行顺序在update之前,他的帧间隔默认是0.02s,可以在untiy中修改,如下图
在这里插入图片描述
Update会受到渲染物体的影响帧率不固定的
LateUpdate 在Update之后执行,同样是不固定帧率的刷新,收到渲染物体影响。

帧率设置

untiy中设置fps刷新帧率
可以在代码中进行设置Application.targetFrameRate 用来设置帧率,可以在脚本的Awake中进行设置

  1. Application.targetFrameRate=-1:表示以最大帧率执行,最快速度运行
  2. Application.targetFrameRate=30:设置帧率为30

Application.targetFrameRate设置生效有以下前提取消垂直同步如下图

在这里插入图片描述
只有这样才能使代码中的设置生效
设置垂直同步为1,如图表示以60帧运行
在这里插入图片描述
设置垂直同步为2 ,如图表示以30帧运行在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值