【Unity学习笔记】脚本的生命周期day1

梦想的初衷 提交于 2020-08-12 05:39:14

Unity 控制台面板Console

Clear 清除所有信息
Collapse 折叠相同消息
Clear on Play 播放时清空消息
Error Pause 如果异常暂停执行(正常情况异常了会继续执行,但异常语句后的代码不会执行)


控制台记录要点、异常要点(右上角1和3)
•Messages 消息:当满足某种条件Unity 引擎自动调用的函数。
在这里插入图片描述

脚本

脚本:.cs的文本文件 类文件 定义游戏对象行为指令的代码。 脚本就是一个类
PS:运行的物体是Gameobject的对象 Transform、camera、audio都是Cameobject的对象
需要找他们的引用
C#类怎样写:
//字段
//属性 (在编译器中不能显示,通常脚本中不写)
//构造函数 (不要写!!)
//方法






脚本怎样写:
// 字段
// 方法

using System.Collections;
using System.Collections.Generic;
using UnityEngine;//1、命名空间的作用:避免类的重名 (命名空间.类的名字)
//4、运行的物体是Gameobject的对象 Transform、camera、audio都是Cameobject的对象需要找他们的引用
//6、脚本就是一个类

//挂到unity物体上的脚本必须从MonoBehaviour继承,其他可以不继承
public class Day1 : MonoBehaviour
{  

Unity的三个特性

    //序列化字段 作用:在编辑器中显示(编辑)私有变量
    [SerializeField]
    private int a=100;

    //作用:在编译器中隐藏公共字段
    [HideInInspector]
    public float b;

    [Range(0, 100)]//可设置范围
    public int c;

脚本生命周期 即 必然事件\消息\脚本的生命周期

是指Unity 脚本从唤醒到销毁的过程。( 就是在开始唤醒到最后销毁,都会满足什么条件,自动调用什么方法)

1、初始阶段

//unity一直是单线程 Awake先,start后
//执行完所有物体的awake、再执行所有的Start
所以可以: 先做的放Awake里,后做的放start里
•Awake()相当于构造函数
• Start()开始
• OnEnable()当可用




    //执行时机:创建游戏对象(物体载入)-->立即-->【执行1次】
    //作用:初始化(相当于构造函数)
    private void Awake()//唤醒
    {
        //****可判断当满足某种条件执行此脚本 this.enable=true
        //脚本启不启用都会执行Awake
    }
    //执行时机:创建游戏对象-->脚本启用-->才【执行1次】
    //作用:初始化(相当于构造函数)
    private void Start(){}
    //执行时机:每当对象启用时-->调用
    private void OnEnable(){}
   

2、物理阶段

•OnCollisionXXX碰撞: 当满足碰撞条件时调用。
•OnTriggerXXX触发: 当满足触发条件时调用。
•FixedUpdate() 固定更新

    //*****************物理阶段(物理引擎检测)*******************
    //执行时机:每隔固定时间执行一次 0.02s(可修改但最好不要)
    //适用性:适合对物体做物理操作(移动、旋转。。),不会受到渲染影响
    private void FixedUpdate()//固定更新
    {//渲染时间不固定(每帧渲染物体量不同、机器性能不同)
    }

3.游戏逻辑

•Update()更新
•LateUpdate()延迟更新

//****************游戏逻辑*************
    //执行时机:渲染帧执行,执行间隔不固定
    //适用性:处理游戏逻辑
    private void Update()//更新
    {
        //每次渲染场景时调用,频率与设备性能及渲染量有关
    }
    private void LateUpdate()//延迟更新
    {
        //在Update函数被调用后执行(同一帧后,几乎一样),适用于跟随逻辑
    }

4、输入事件

•OnMouseEnter鼠标移入:鼠标移入到当前Collider 时调用。(必须要加collide组件)
•OnMouseOver鼠标经过:鼠标经过当前Collider 时调用。
•OnMouseExit鼠标离开:鼠标离开当前Collider 时调用。
•OnMouseDown鼠标按下:鼠标按下当前Collider 时调用。
•OnMouseUp鼠标抬起:鼠标在当前Collider 上抬起时调用。



5、场景渲染

•OnBecameVisible当可见:当MeshRenderer 在任何相机上可见时调用。(物体必须有MR)
•OnBecameInvisible当不可见: 当MeshRenderer 在任何相机上都不可见时调用。

6、结束阶段

•OnDisable当不可用:对象变为不可用或附属游戏对象非激活状态时此函数被调 用。
•OnDestroy当销毁:当脚本销毁或附属的游戏对象被销毁时被调用。
•OnApplicationQuit当程序结束:应用程序退出时被调用。

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