脚本的生命周期
代码
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中进行设置
- Application.targetFrameRate=-1:表示以最大帧率执行,最快速度运行
- Application.targetFrameRate=30:设置帧率为30
Application.targetFrameRate设置生效有以下前提取消垂直同步如下图
只有这样才能使代码中的设置生效
设置垂直同步为1,如图表示以60帧运行
设置垂直同步为2 ,如图表示以30帧运行
来源:CSDN
作者:行知行
链接:https://blog.csdn.net/qq_30087879/article/details/103467568