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

public class Lifecycle : MonoBehaviour
{
//脚本:.cs 类文件
//附加到游戏体中,定义游戏对象行为指令的代码

//C#类
//字段
//属性
//构造函数
//方法

//脚本:
//字段
//方法

[SerializeField ]//在编译器中显示私有变量
private  int a = 100;

[HideInInspector ]//在编译器中隐藏公共变量
public int b;

[Range (0,100)]
public float c;

//属性:在编译器中不能显示,通常脚本中不写。
/*public int A
{
    get{ return this.a; }
    set{ this.a = value; }
}
*/
/*
public Lifecycle ()//不要在脚本中写构造函数
{
    //不能在子线程中访问主线程成员。
    b = (int)Time.time;
}
*/

//*******************初始阶段**********************

//执行时机:创建游对象,立即执行1次 (早于Start)
//作用:初始化---相当于构造函数
private void Awake()
{
    Debug.Log("Awake" + Time.time+"-"+this .name );
    
}
//执行时机:创建游对象,脚本启用 才执行(1次)
//作用:初始化---相当于构造函数
private void Start()
{
    b = Random.Range(1, 100);
    Debug.Log("Start" + Time.time+"-"+this .name );//调试
    print("ok");//调试(父类的方法-仅在脚本中可以直接使用)
}

//********************物理阶段*********************
//执行时机:每隔固定时间执行一次。(时间可以修改  默认值 0.02 s)
//适用性:适合对物体做物理操作(移动,旋转。。。。),不会受到渲染影响
private void FixedUpdate()
{//渲染时间不固定(每帧渲染量不同,机器性能不同)
    Debug.Log(Time.time);
}

public float time;//调试
//********************游戏逻辑*********************
//执行时机:渲染帧执行,执行间隔不固定
//适用性:处理游戏逻辑
private void Update()
{
    //单帧调试:启动调试  运行场景  暂停游戏 加断点  单帧执行  结束调试
    //调试过程中,输入代码
    //右键  快速监视
    //查看  即时窗口
    time = Time.time;
}

//********************结束阶段*********************

}