unity3d脚本生命周期

落花浮王杯 提交于 2019-12-10 09:56:24

脚本的生命周期

代码

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");
    }
}

代码分析

说明一点脚本必须继承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帧运行在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!