Unity脚本概述

与其他常用的平台有所不同,Unity中的脚本程序如果要起作用,主要途径为将脚本附加到特定的游戏对象上。这样脚本中不同的方法在特定的情况下会被调用,实现特定的功能。
在Unity脚本中,各事件函数的功能和大体的执行顺序如下:
1、Awake

   Awake用于脚本唤醒。此方法为系统执行的第一个方法,用于脚本的初始化,在脚本的生命周期中只执行一次。

2、Start

   Start方法在Awake之后执行,在脚本的生命周期中只执行一次。由于Awake和Start函数的特性与c#中的构造函数类似(一般情况下,在脚本的生命周期中只执行一次),所以在Unity中也常用来初始化类的成员变量。这个方法在游戏场景加载时被调用,在该方法内可以写一些游戏场景初始化之类的代码。

3、FixedUpdate

   FixedUpdate用于固定频率更新。这个方法会在固定的物理时间步调调用一次。这里也是基本物理行为代码执行的地方。通常情况下下,FixedUpdate()比Update()更频繁地调用。当帧率较低时,在某一帧的时间间隔内比Update可能会被调用多次;而当帧率很高时,在某一帧的时间间隔内FixedUpdate可能根本不会调用。还有一点,在Unity中,若设置Time Scale值为0,可以实现动力学特性的暂停,即所有的FixedUpdate中的代码都不会执行。

4、Update

    Update用于正常更新,即用于帧更新后同步场景状态。此方法每帧都会由系统自动调用一次。大部分的游戏代码在这里执行,除了物理部分的代码。在使用Update()时,对于一些变量,如速度、移动距离等通常需要乘以Time.deltaTime来抵消帧率带来的影响,使物体状态的改变看起来比较均匀正常。而在FixedUpdate中,由于其更新频率固定,所以不需要采用Time.deltaTime来修正状态改变频率。

5、LateUpdate

    LateUpdate用于延迟更新,此方法在Update()之后执行,每一帧调用一次。

6、OnGUI

    OnGUI用来绘制用户交互界面,每一帧会调用多次。其中,与布局(Layout)和重汇(Repaint)相关的事件会被优先处理,然后是键盘事件和鼠标事件。

7、OnDestroy

    OnDestroy在当前脚本被销毁时调用。若在脚本中动态分配了内存,可以再OnDestroy()中进行释放。    同时,开发人员在有需要的情况下,还可以重写一些处理特定事件的回调方法,这类方法一般以On前缀开头,如OnCollisionEnter方法(此方法在系统检测到碰撞开始时回调)等。

Unity官方提供的事件顺序图:

   1、继承自MonoBehaviour类Unity中所有挂载到游戏对象上的脚本中的类必须继承MonoBehaviour类(直接的或者间接地),MonoBehaviour定义了各种回调方法,如Start、Update等。2、类名字必须匹配文件名C#的类名需要手动编写,而且类名必须和文件名相同,否则当脚本挂载到游戏对象时,在控制台会报错。3、使用Awake或Start方法初始化用于初始化脚本的代码必须置于Awake或Start方法中。两者不同之处在于Awake在加载场景时运行;Start方法是在第一次调用Update或FixedUpdate方法之前被调用;Awake运行在所有Start方法之前。4、Unity脚本中的协同程序有不同的语法规则(1)协程的返回值必须是Enumerator。(2)协程的参数不能加关键字ref或out。(3)在C#脚本中,必须通过StartCoroutine来启动协程。(4)yield语句要用yield return 来代替。(5)在函数Update和FixedUpdate中,不能使用yield语句,但可以启动协程。5、只有满足特定情况变量才能显示在属性查看器中只有序列化的成员才能显示在属性查看器中,如果属性想在属性查看器中显示,其必须是public类型的。6、尽量避免使用构造函数不要在构造函数中初始化任何变量,要用Awake或Start方法来实现。即便是在编辑模式,Unity会自动调用构造函数。7、调试Unity中C#代码的调试与传统的C#调试有所不同。Unity自带了完善的调试功能,在Unity中的控制台(Console)中包含了当前的全部错误,双击这个错误,可以自动跳转到默认的脚本编辑器中,然后光标会在错误所对应的行首跳动。

Unity中的坐标系

   一般情况下,在Unity中,x轴为红色的轴表示左右,y轴为绿色的轴表示上下,z轴为蓝色的轴表示前后。

Unity3D脚本概述相关推荐

  1. Unity3D脚本中文系列教程(七)

    http://dong2008hong.blog.163.com/blog/static/4696882720140311445677/?suggestedreading&wumii Unit ...

  2. Unity3D脚本中文系列教程(五)

    http://dong2008hong.blog.163.com/blog/static/4696882720140302848544/?suggestedreading&wumii Unit ...

  3. Unity3d 脚本开发代码规范

    代码规范 代码规范问题是这样的一个问题:高性价比,不被重视,实际做的时候难以做好 统一的规范有利于代码简洁,进而利于控制复杂度,关于复杂度可以参见之前的文章(http://blog.csdn.net/ ...

  4. unity3d 脚本参考-技术文档

    unity3d 脚本参考-技术文档 核心提示:一.脚本概览这是一个关于Unity内部脚本如何工作的简单概览.Unity内部的脚本,是通过附加自定义脚本对象到游戏物体组成的.在脚本对象内部不同志的函数被 ...

  5. (四)unity3D脚本的执行顺序

    一个unity3D脚本的执行顺序: 1. 调用所有Awake方法 2. 调用所有Start方法 3. 游戏逻辑循环(物理部分): 1)调用FixedUp方法 2)物理模拟 3)OnEnter.Exit ...

  6. Unity3D——脚本编程

    在本章中我们将学习的是Unity3D的脚本编程,Unity3d目前支持javascript,c#,Boo这三种脚本的开发!由于本人开发过C++所以就直接用C#来进行unity3d的脚本开发!在脚本开发 ...

  7. Unity3D脚本属性

    Unity3D的脚本属性用法: // JavaScript@script AddComponentMenu ("Transform/Follow Transform") // CS ...

  8. 4_Shell语言———脚本概述

    一.初识脚本 简单说,脚本就是数条可执行语句的罗列.例如我们将以下可执行命令粘贴至first.sh 这个文件中: UserName=user1 mkdir /users useradd -d /use ...

  9. unity3d 材质概述 ---- shader

    学习笔记:       材质概述:  物体呈现在我们前面除了形体外,还包括"固有颜色"和"质地"(质感与光学性质).固有颜色让物体的表面看起来是什么颜色,而质感 ...

  10. 关于Unity3D脚本调试

    http://hi.baidu.com/ytxr_/item/f1a0a436c2fd6cf3e6bb7a1b Unity3D 是一个基于 Mono 的跨平台游戏引擎,支持 PC .MAC . And ...

最新文章

  1. ubuntu mysql5.6 编译安装_Ubuntu14.04编译安装mysql5.6.26
  2. MIT、哈佛合作,这个研究让神经网络认清自己“几斤几两”!
  3. 百度测试linux面试题,百度测试开发岗位面试题目
  4. PHP文件 字符集编码!
  5. 史上最全的延迟任务实现方式汇总!附代码(强烈推荐)
  6. SQL Server-服务器迁移之后login登录问题
  7. directui 3d界面引擎_美术设计师浅谈AR/VR中3D建模设计的工具、挑战与区别
  8. java io流缓冲理解
  9. 投影仪开关机码和波特率
  10. 探讨VSTS联合MS PROJECT协同开发之三:比较篇
  11. 软考高级系统分析师考试2022论文考了些啥?改为二选一
  12. a java exception has occured java
  13. 拥有自己的百度直达号
  14. 【Re】36C3CTF xmas_future
  15. python抓取360图片之马自达
  16. XiaoHu日志 6/17~6/19
  17. ifix从sqlserver里读数据_基于GE Fanuc产品PBS汽车总装生产线监控系统设计
  18. PSINS源码test_SINS_DR解析
  19. 2345好压下载|2345好压软件下载
  20. java售楼系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署

热门文章

  1. 回顾18年我的Java自动化测试框架
  2. 支持傲腾技术的服务器主板,华硕200系主板安装英特尔傲腾内存教程
  3. EPLAN p8 安装失败解决办法
  4. 不为人知的网络编程(八):从数据传输层深度解密HTTP
  5. 基于VISSIM和Python的二次开发基础—多时段配时控制
  6. WorkList-Dicom字段定义
  7. xamarin怎么调用java的_Xamarin使用教程六:如何引用JAR档案
  8. 解读主流CDN厂商的节点数据
  9. 特殊字符 U+200X/
  10. 微信多开软件(Java版)