using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ScriptLife : MonoBehaviour
{
///<summary>
///
///</summary>
/*
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
*/
//脚本:.cs的文本文件(类文件)
//·可附加到游戏物体中,定义游戏对象行为指令的代码
/*C#类文件结构:(如不用挂在物体上的C#类文件,需要遵循以下规则)
* 字段
* 属性
* 构造函数
* 方法
*
*
*Unity-C#脚本cs文件结构(如需要挂在物体上的C#脚本文件,需要遵循以下规则)
*字段
*方法
*/
//序列化字段,作用:在编译器中显示私有变量,其他类无法访问此字段
[SerializeField]
private int a=100; //初始值字段,在编译器中默认显示的值是100,但是在编译器中改变后就会保存(因为改变的是对象的值)
//需要重新挂在物体上才能生效
//在Unity脚本中,属性在编译器中不能显示,通常脚本中不写
private int A
{
get { return this.a; }
set { this.a = value; }
}
//作用:在编译器中隐藏字段,但其他类可以访问此字段
[HideInInspector]
public int b;
//作用,在编译器中,此字段是范围字段
[Range(0,100)]
public int c;
public float d;
//不要在脚本中写构造函数!!
/*
public ScriptLife()
{
Debug.Log("调试:调用构造函数");
//不能在子线程中访问主线程成员
//不要在脚本中写构造函数
//d = Time.time;
}
*/
/*以下开始讲解脚本生命周期主要内容---初始阶段
* · Awake 唤醒:(常用重点)
* - 当物体载入时立即调用一次;常用于在游戏开始前进行初始化,可以判断当满足某种条件执行此脚本this.enable=true.
* · OnEnable 当可用:
* - 每当脚本对象启用时调用。
* · Start 开始:(常用重点)
* - 物体载入且脚本对象启用时被调用一次。常用于数据或游戏逻辑初始化,执行时机晚于Awake。
*
* 在Unity里面,永远都是Awake先执行,Start后执行
*/
//此语句在Unity会报错,因为Random没有System命名空间引用时,是Unity的方法
//没放在方法内等于是在构造函数调用Unity方法,上面例子:不能在子线程中访问主线程成员
//所以需要放在方法内,而随机数一般都用于数据初始化阶段,故最好放在Awake或者Start方法内!
//private int e = Random.Range(1, 101);
private int e;
//执行时机:创建游戏对象 --> 立即执行 (早于Start)
//作用:初始化
//注意方法名一定是Awake
private void Awake()
{
//Debug.Log("Awake-->" + Time.time+"-->"+this.name);
//Time.time 这句程序语句开始执行的时间(浮点型float)
//this.name 返回游戏名称(字符串类型)
//e = Random.Range(1, 101);
//Debug.Log(e);
}
//执行时机:创建游戏对象 --> 脚本启用时才执行
//作用:初始化
//注意方法名一定是Start
private void Start()
{
//Debug.Log("Start-->" + Time.time + "-->" + this.name);
}
/*以下开始讲解脚本生命周期主要内容---物理阶段
* · FixedUpdate 固定更新:(常用重点)
* - 脚本启用后,固定时间被调用,适用于对游戏对象做物理操作,例如移动、旋转等(物体运动操作)。
* - 设置更新频率:"Edit" --> "Project Setting" --> "Time" --> "Fixed Timestep"值,默认为0.02s!
* · OnCollisionXXX 碰撞:
* - 当满足碰撞条件时调用。
* · OnTriggXXX 触发:
* - 当满足触发条件时调用。
*/
//执行时机:每隔固定时间执行一次。(时间可以修改)
//适用性:适合对物体做物理操作(移动、旋转...),因为是固定时间,所以不会受到渲染影响
//渲染时间不固定(每帧渲染物体量不同、机器性能不同)
private void FixedUpdate()
{
//Debug.Log(Time.time);
}
/*以下开始讲解脚本生命周期主要内容---游戏逻辑阶段
* · Update 更新:(常用重点)
- 脚本启用后,每次渲染场景时调用,频率与设备性能及渲染量有关。
* - 适合物体移动时的代码
· LateUpdate 延迟更新:
- 在Update函数被调用后执行,适用于跟随逻辑。(在Update同一帧工作,但是是先执行Update,Update执行完毕在执行LateUpdate)
* - 适合相机跟随物体的代码
*/
//执行时机:每一次渲染帧执行一次,执行间隔不固定
//适用性:处理游戏逻辑
private void Update()
{
}
/*以下开始讲解脚本生命周期主要内容---输入事件
* · OnMouseEnter 鼠标移入:
* - 鼠标移入到当前Collider时调用。
* · OnMouseOver 鼠标经过:
* - 鼠标经过当前Collider时调用。
* · OnMouseExit 鼠标离开:
* - 鼠标离开当前Collider时调用。
* · OnMouseDown 鼠标按下:(常用重点)
* - 鼠标按下当前Collider时调用。
* · OnMouseUp 鼠标抬起:
* - 鼠标在当前Collider上抬起时调用。
*
* 注意:挂在物体上必须有启用的物体碰撞器Collider,才会生效以上输入事件
*/
private void OnMouseDown()
{
Debug.Log("OnMouseDown ");
}
/*以下开始讲解脚本生命周期主要内容---场景渲染
* · OnBecameVisible 当可见:
* - 当Mesh Renderer 在任何相机上可见时调用。(看见的那一帧就执行一次)
* · OnBecameInvisible 当不可见:
* - 当Mesh Renderer 在任何相机上都不可见时调用。(看不见的那一帧就执行一次)
*/
/*以下开始讲解脚本生命周期主要内容---结束阶段
* · OnDisable 当不可用:
* - 对象变为不可用或附属游戏对象非激活状态时此函数被调用。
* · OnDestroy 当销毁
* - 当脚本销毁或附属的游戏对象被销毁时被调用。
* · OnApplicationQuit 当程序结束:
* - 应用程序退出时被调用。
*/
}
|