Unity中的脚本都是继承自MonoBehaviour。

一、基础函数:

创建脚本就默认的update、start方法:(这些官方的文档都是有的)

Start:Update函数第一次运行前调用,一般用于游戏对象的初始化。比如GetComPonent之类。

Update:每帧调用;一般用于更新场景和状态,物理相关不建议在此处处理。

Awake:脚本实例对象被创建时调用,也可以用于游戏对象的初始化,但是Awake是在所有脚本的Start之前执行。

FixedUpdate:固定间隔执行,一般用于物理状态更新。

LateUpdate:每帧执行,在Update之后。一般和摄像机有关的状态放在这里处理。

现在我来简单测试下:我在场景中添加了两个Cube,分别添加了Script1,Script2,下面是执行log,可以看到Awake是在所有脚本之前调用的。

二、事件响应函数:

MonoBehaviour中的事件响应函数都是已On开头的,比如:鼠标事件,脚本激活、销毁,碰撞等。

OnApplicationFocus:当玩家获得或失去焦点时发送给所有游戏物体。可以作为协同程序,在函数中使用yield语句即可

OnApplicationPause:当玩家暂停时发送到所有的游戏物体。可以作为协同程序,在函数中使用yield语句即可。

OnApplicationQuit:在应用退出之前发送给所有的游戏物体。当用户停止运行模式时在编辑器中调用。当web被关闭时在网络播放器中被调用。

OnBecameInvisible:当renderer(渲染器)在任何相机上都不可见时调用OnBecameInvisible。

OnBecameVisible:当renderer(渲染器)在任何相机上可见时调用OnBecameVisible。

OnCollisionEnter:当此collider/rigidbody与另一个rigidbody/collider接触时调用。

OnCollisionExit:当此collider/rigidbody停止触发另一个rigidbody/collider时。

OnCollisionStay:当此collider/rigidbody触发另一个rigidbody/collider时,OnCollisionStay将会在每一帧被调用。

OnConnectedToServer:当你成功连接到服务器时,在客户端调用。

OnDisconnectedFromServer:失去连接或从服务器端断开时在客户端调用。

OnFailedToConnectToMasterServer:当连接主服务器出现问题时在客户端或服务器端调用。

OnControllerColliderHit:在移动的时,当controller碰撞到collider时OnControllerColliderHit被调用。

OnDestroy:脚本销毁时调用。

OnDisable:对象禁用或者取消激活时调用。

OnEnable:对象变为可用或激活状态时此函数被调用。

OnDrawGizmosSelected:如果想在物体被选中时绘制gizmos,执行这个函数。

OnGUI:渲染和处理GUI事件时调用。

OnJointBreak:当附在同一对象上的关节被断开时调用。

OnLevelWasLoaded:一个新关卡被载入时此函数被调用。

OnMouseDown、OnMouseDrag、OnMouseEnter、OnMouseExit、OnMouseOver、OnMouseUp:鼠标事件。

OnMouseUpAsButton:只有当鼠标在同一个GUIElement或Collider按下,在释放时调用。

OnTriggerEnter:当Collider(碰撞体)进入trigger(触发器)时调用OnTriggerEnter。

OnTriggerExit:当Collider(碰撞体)停止触发trigger(触发器)时调用OnTriggerExit。

OnTriggerStay:当碰撞体接触触发器时,OnTriggerStay将在每一帧被调用。

三、默认组件

组件对应的变量名是组件名的小写。

Transform:对象的位置,角度,缩放。变量名:transform

Rigidbody:刚体属性。

Render:渲染物体模型。

Light:灯光属性。

Camera:相机属性。

Collider:碰撞体属性。

Animation:动画属性。

Audio:声音属性。

四、组件获取函数

获取组件的方法由于比较耗时,所以如果你在update修改transform的话,一般可以先在Start中获取这个组件的引用,然后在update中使用引用去修改。

比如获取上面例子cube1的script1脚本:

[c-sharp]Script1 spt1 = GetComponent<Script1>( );[/c-sharp]

下面是获取组件的函数:

GetComponent:获取组件。

GetComponents:获取组件列表。

GetComponentInChildren:返回Type类型组件,在GameObject或它的任何子物体使用深度优先搜索,仅返回激活的组件。

GetComponentsInChildren:在GameObject或任何它的子物体,返回全部Type类型组件。

五、获取场景中的游戏对象

同样和获取组件一样,该方法比较费时,一般在Start中获取引用。

[c-sharp]

GameObject cube1 = GameObject.Find("Cube1");

GameObject cube1 = GameObject.FindWithTag("tag_cube1");

[/c-sharp]

除了上面的方法,也可以使用public对象,直接使用面板拖拽赋值。

MonoBehaviour简述的更多相关文章

  1. 简述 OAuth 2.0 的运作流程

    本文将以用户使用 github 登录网站留言为例,简述 OAuth 2.0 的运作流程. 假如我有一个网站,你是我网站上的访客,看了文章想留言表示「朕已阅」,留言时发现有这个网站的帐号才能够留言,此时 ...

  2. JavaScript单线程和浏览器事件循环简述

    JavaScript单线程 在上篇博客<Promise的前世今生和妙用技巧>的开篇中,我们曾简述了JavaScript的单线程机制和浏览器的事件模型.应很多网友的回复,在这篇文章中将继续展 ...

  3. Design Patterns Simplified - Part 3 (Simple Factory)【设计模式简述--第三部分(简单工厂)】

    原文链接:http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part3-factory/ Design ...

  4. MonoBehaviour Lifecycle(生命周期/脚本执行顺序)

    脚本执行顺序 前言 搭建一个示例来验证Unity脚本的执行顺序,大概测试以下部分: 物理方面(Physics) 渲染(Scene rendering) 输入事件(InputEvent) 流程图 Uni ...

  5. Android网络定位服务定制简述

    Android 添加高德或百度网络定位服务 Android的网络定位服务以第三方的APK方式提供服务,由于在国内Android原生自带的com.google.android.gms服务几乎处于不可用状 ...

  6. 《Entity Framework 6 Recipes》翻译系列 (1) -----第一章 开始使用实体框架之历史和框架简述

    微软的Entity Framework 受到越来越多人的关注和使用,Entity Framework7.0版本也即将发行.虽然已经开源,可遗憾的是,国内没有关于它的书籍,更不用说好书了,可能是因为EF ...

  7. 简述ASP.NET MVC原理

    1.为什么ASP.NET需要MVC? 因为随着网站的的数量级越来越大,原始的网站方式,这里指的是WebForm,在运行速度和维护性方面,以及代码量上面,越来越难以满足日益庞大的网站维护成本.代码的重构 ...

  8. Design Patterns Simplified - Part 2 (Singleton)【设计模式简述--第二部分(单例模式)】

    原文链接: http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part-2-singleton/ De ...

  9. 【翻译】设计模式学习系列1---【Design Patterns Simplified: Part 1【设计模式简述:第一部分】】

    原文链接:http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part1/ Design Pattern ...

随机推荐

  1. Android BottomSheet:便捷易用的底部滑出面板(1)

    Android BottomSheet:便捷易用的底部滑出面板(1) Android BottomSheet是github上的一个第三方开源项目,其主页:https://github.com/Flip ...

  2. 使用ajax,后台传回的数据处理

    使用ajax,后台传到前台的是json数据,但这只是一个字符串的形式,需要进行转换为对象 转换后再使用$.each()方法进行遍历 使用alert(typeof  msg) ;  可以查看msg的类型 ...

  3. 解决使用myeclipse电脑卡的问题

    1. 原因:myeclipse会自动更新,因此会占用大量内存 2. 解决方法: (1)window->Perferences->General->Startup and Shutdo ...

  4. vim中256色的配色表

    vim貌似支持的颜色很有限.white  black  yellow  cyan   magenta   blue   grey   green   red,大多数颜色前面都可以加light 或者 d ...

  5. 通过代码学习python之@property,@staticmethod,@classmethod

    URL: https://www.the5fire.com/python-property-staticmethod-classmethod.html #coding=utf-8 class MyCl ...

  6. The Evaluation of Determinant(求行列式mod一个数的值)

    #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #i ...

  7. 将list转为json字符串

    //确保JSP和servlet的编码方式一致 resp.setContentType("text/html;charset=GBK"); List<String> jy ...

  8. 1.7-BGP①

    IGP:   包括RIP/EIGRP/OSPF/ISIS/ODR等动态路由协议   运行在同一个AS中,   通过Cost/Metirc来判断路由的优劣(越小越好):   AS:自治系统(小)   A ...

  9. datatables接口

    /*资源表格接口*/ var dataTableHeader=function(elem,unSorts,defaultSort,screens,status,toggleVis,ipAddress, ...

  10. 配置hadoop集群一

    花了1天时间最终把环境搭建好了.整理了一下,希望对想学习hadoop的有所帮助. 资料下载:http://pan.baidu.com/s/1kTupgkn 包括了linux虚拟机.jdk, hadoo ...