脚本和生命周期以及如何在代码中获取基本属性

一、脚本的生命周期

Awake() 脚本组件载入时(调用一次)
Start() 第一个Update发生之前(调用一次)
Update() 大部分游戏行为代码被执行的地方,除了物理代码
FixedUpdate() 固定时间调用,常用于物理相关的计算,比如对RigidBody的操作
LaterUpdate() 每帧Update调用之后
OnGui() 绘制GUI时调用
Reset() 组件重设为默认值时(只用于编辑状态)
OnDisable() 当对象设置为不可用时
OnDestroy() 组件销毁时调用

生命周期调用以下方法的执行顺序是如下
void Awake()
{
    Debug.Log("执行顺序Awake---1");
}
//判断一个游戏对象可用?
void OnEnable()
{
    Debug.Log("执行顺序OnEnable---2");
}
// Use this for initialization
void Start()
{
    Debug.Log("执行顺序Start---3");
}
//固定帧率调用,一般用于物理方面(例如刚体)
void FixedUpdate()
{
    Debug.Log("执行顺序FixedUpdate---3");
}
// Update is called once per frame
void Update()
{
    Debug.Log("执行顺序Update---4");
}
//在Update函数之后调用,频率跟UpDate一样。
void LateUpdate()
{
    Debug.Log("执行顺序LateUpdate---5");
}
//绘制UI控件的时候调用。例如加Button按钮控件,Lable标签控件等等
void OnGUI()
{
    Debug.Log("执行顺序OnGUI---6");
}
//当游戏对象不可用的时候调用(当禁止一个游戏对象运行的时候或者退出游戏的时候会调用方法)
void OnDisable()
{
    //Destroy(this.gameObject);//摧毁当前的游戏对象
    Debug.Log("执行顺序Disable---7");
}
//注意:OnEnable和OnDisable:当游戏进行时,一个游戏第一次启用的时候会执行Awake()、OnEnable()、Start()方法函数,
//当游戏对象不可用的时候,会调用OnDisable()方法,再重新启用就不会执行Awake()、Start()方法函数了。
脚本和生命周期以及如何在代码中获取基本属性_第1张图片
生命周期表
脚本的加载顺序

脚本只有挂载在游戏物体上时,才会被启用。
假设 我现在同一个物体上挂载了两个脚本,分别为Scripts1.cs 与
Scripts2.cs,它们两个的Awake函数是同时进行的吗?如果不是,
我该怎样调节它们的执行顺序?
选择Edit
红圈中为脚本名,红线代表时间,时间越大,执行顺序越靠后
点击加号可以添加自定义脚本

脚本和生命周期以及如何在代码中获取基本属性_第2张图片
图1-1

Update 详解
FixedUpdate 固定频率更新
可以在 Edit -> project settings -> Time -> Fixed Timestep 中设定该频率
Update 渲染帧更新
Update是受当前渲染的物体,更确切的说是三角形的数量影响,有时快有时慢,帧率会变化
LateUpdate 延迟更新
在每帧的所有Update函数执行完以后,才会执行此函数
脚本和生命周期以及如何在代码中获取基本属性_第3张图片
图1-2

如何在代码中获取基本属性

public  GameObject obj;
// Use this for initialization
void Start () {
    obj.SetActive(true);//让游戏对象显示或者隐藏
    obj.isStatic=true;//表示当前游戏对象是一个禁止对象
    obj.name = "hello";//在游戏运行时游戏对象名字的更改;
  Transform t2 = GetComponent();
  print(t2.position.x);//输出Transform下position的x轴的值
}
// Update is called once per frame
void Update () {

}

你可能感兴趣的:(脚本和生命周期以及如何在代码中获取基本属性)