Unity基础(02)——脚本显示与生命周期

一、脚本在 Unity 的 Inspector 面板中显示

1、Inspector 窗口中有的脚本前面有勾选框,有的则没有。如下图所示。

    当脚本中没有 Start(){} 、 Update(){} 、OnGUI(){} 等基本函数时,脚本前面就不显示勾选框。只要脚本中有这两个函数中的任意一个,就会显示勾选框。

    

2、在C#脚本中以 public 声明的变量,都会在 Inspector 窗口的相应脚本组件中显示出来。

   如C#脚本中的:public float sensorHeight = 1.0f ;  在Inspector 窗口的相应脚本组件中显示如下: 

   

3、 一个脚本就是一个类,调用一个脚本中的函数就相当于调用一个类的成员函数。


二、Unity中的脚本执行顺序

1、脚本中的事件常见执行顺序:

Awake ——> Start ——> Update ——> LateUpdate

    //1、************************初始阶段:Awake、Start均用于初始化,注意其名称不能写错*********************

    // 游戏对象创建时,立即执行Awake()一次,而此时该脚本前面的方框是否勾选(即脚本是否启用)都不影响其执行
    private void Awake()
    {
        Debug.Log("Awake == " + Time.time + "---"+name);
    }
    // 游戏对象创建,且脚本启用,才执行一次
    private void Start()
    {
        Debug.Log("Start ==" + Time.time + "---" + this.name);
    }

    //2、************************物理阶段:*********************

    // 每隔固定时间执行一次,时间可以修改,默认是0.02s
    //适用于对游戏对象做物理操作,如移动、旋转。不会受到渲染的影响
    private void FixedUpdate()
    {
        Debug.Log("FixedUpdate ==" + Time.time);
    }

    //3、************************鼠标事件:*********************

    //将该脚本挂载在某一物体上,运行时当鼠标点击该物体,触发该事件
    //鼠标事件生效的前提是该物体上要有碰撞检测器:Collider
    private void OnMouseDown()
    {
        Debug.Log("Click the mouse **");
    }

    //************************游戏逻辑:*********************

    //渲染帧执行,执行间隔不固定。因为渲染时间不固定,会受到物体量和机器性能的影响
    // 适用于处理游戏的逻辑
    private void Update()
    {
        
    }
    //实际是和Update在同一帧执行,但是它是在UPdate执行之后再执行
    private void LateUpdate()
    {
        
    }

2、Unity脚本的事件函数执行流程:

       

  • Reset()  :———— 在用户点击检视面板的 Reset 按钮时才会被调用,其只在编辑模式下被调用。Reset最常用于在检视面板中给定一个默认值。
  • Awake()  :———   所有的Unity脚本中最先执行的就是Awake(),游戏对象创建时,立即执行Awake
  • OnEnable():——  每当脚本对象启用时,调用。即启用脚本就调用
  • Start():————    Awake()执行之后,接着就使执行Start(),对设备进行初始化。仅在Update函数第一次被调用前调用。Start在      behaviour的生命周期中只被调用一次。它和Awake的不同是Start只在脚本实例被启用时调用。Awake总是在Start之前执行。这允许你协调初始化顺序。在所有脚本实例中,Start函数总是在Awake函数之后调用。
  • FixedUpdate():—— 固定帧更新,在Unity导航菜单栏中,点击“Edit”-->“Project Setting”-->“Time”菜单项后,右侧的Inspector视图将弹出时间管理器,其中“Fixed Timestep”选项用于设置FixedUpdate()的更新频率,更新频率默认为0.02s。
  • OnTriggerXXX():——
  • OnCollisionXXX()
  • OnMouseXXX():—— 鼠标事件,将该脚本挂载到某一物体上后,运行时点击Game视窗中的该物体时,会触发相应的事件。前提是该物体上有碰撞检测器:Collider
  • Update():—— 正常帧更新,用于更新逻辑。每一帧都执行一次
  • LateUpdate():—— 在所有Update函数调用后被调用。例如:当物体在Update里移动时,跟随物体的相机可以在LateUpdate里实现。LateUpdate,在每帧Update执行完毕调用,他是在所有update结束后才调用,比较适合用于命令脚本的执行。官网上例子是摄像机的跟随,都是在所有update操作完才跟进摄像机,不然就有可能出现摄像机已经推进了,但是视角里还未有角色的空帧出现。
  • OnGUI():—— 在渲染和处理GUI事件时调用
  • OnDisable():—— 当物体被销毁时 OnDisable将被调用,并且可用于任意清理代码。脚本被卸载时,OnDisable将被调用,OnEnable在脚本被载入后调用。注意: OnDisable不能用于协同程序
  • OnDestroy():—— 当MonoBehaviour将被销毁时,这个函数被调用

3、当有多个脚本时,最先绑定的脚本,最后执行。设置脚本的执行顺序方法如下:

       

4、在执行多个脚本时,先执行每个脚本中的 Reset 函数,将每个脚本中的Reset 函数执行完之后,再执行 每个脚本的 Awake 函数,类似的再依次执行 Start 函数,Update 函数,Late Update 函数。(Unity3D中脚本的执行顺序和编译顺序

5、一个脚本可以同时挂载在多个物体上。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值