`
252190908
  • 浏览: 245547 次
文章分类
社区版块
存档分类
最新评论

MonoBehaviour介绍(Unity3D开发之一)

 
阅读更多

猴子原创,欢迎转载。转载请注明:转载自Cocos2D开发网–Cocos2Dev.com,谢谢!

原文地址:http://www.cocos2dev.com/?p=486

猴子自学Unity已经一段时间了,不过还一直没有真正用于商业游戏。这段时间不是很忙,所以想系统的整理下unity技术。都是自己学习中的一些东西,所以深度不是深。

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脚本:

Script1 spt1 = GetComponent<Script1>( );
下面是获取组件的函数:

GetComponent:获取组件。

GetComponents:获取组件列表。

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

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

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

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

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

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

分享到:
评论

相关推荐

    Unity3D圣典中文脚本

    《Unity3D圣典中文脚本》是一本深入解析Unity3D引擎的中文参考资料,它以CHM(Compiled Help ...这本书的深入讲解和实例演示,将帮助你提升在Unity3D平台上的开发效率和创作能力,为你的3D游戏开发之路提供坚实的基础。

    的Unity3D认证级游戏开发核心训练视频教程

    ### Unity3D认证级游戏开发核心训练视频教程知识点解析 #### 一、Unity3D概述与环境搭建 **1.1 Unity3D简介** Unity3D是一款由Unity Technologies开发的跨平台游戏引擎,广泛应用于独立游戏开发、大型游戏制作、...

    Unity3D之仪表盘仪表

    ### Unity3D之仪表盘仪表 #### 知识点一:Unity3D基础概念与环境搭建 **Unity3D概述**: Unity3D是一款由Unity Technologies开发的跨平台游戏引擎,支持多种编程语言(如C#、JavaScript等),广泛应用于三维、二维...

    Unity 3D脚本编程 使用C#语言开发跨平台游戏 ,陈嘉栋著

    Unity 3D是一款强大的游戏开发工具,其支持C#语言编写脚本,使得开发者能够利用面向对象的特性,创建出复杂且富有交互性的游戏世界。 一、Unity 3D与C#基础 Unity 3D引擎是游戏开发者的首选平台,它提供了一个全面...

    unity3d中文手册

    Unity3D是一款强大的跨平台游戏开发引擎,广泛应用于2D、3D游戏、虚拟现实(VR)和增强现实(AR)项目的制作。它的脚本功能是其核心特性之一,允许开发者通过编写代码来控制游戏对象的行为,实现各种复杂的交互和逻辑。...

    unity3d游戏开发之角色的动画脚本的编写(二).pdf

    Unity3D游戏开发之角色的动画脚本的编写(二) 本文主要介绍了Unity3D游戏开发中角色动画脚本的编写,特别是关于动画融合(Animation Blending)的应用。 动画融合是一种必不可少的特性,让游戏中的角色能够产生...

    Unity 3D脚本编程 使用C#语言开发跨平台游戏_PDF

    其核心特性之一是支持使用C#语言进行脚本编程,使得开发者能够高效地实现游戏逻辑、交互功能和系统管理。 在Unity 3D中,C#脚本扮演着至关重要的角色。C#是一种类型安全、面向对象的编程语言,具有现代编程语言的...

    Unity3D人物行走脚本示例2

    在Unity3D游戏开发中,角色的行走与交互是至关重要的。本文将详细解析一个基于Unity3D的人物行走脚本示例,该脚本适用于第一人称视角(First Person Controller)。我们将探讨如何实现角色的前后左右移动、跳跃、...

    让不懂编程的人爱上Unity3d游戏开发026-Unity3d和C#的双剑合璧01-Unity游戏脚本剖析上.pdf

    C#不仅简洁高效,而且功能强大,是Unity3D推荐使用的脚本语言之一。C#的语法类似于Java,因此对于熟悉Java或其他C系语言的开发者来说,学习起来相对容易。 #### 三、Unity游戏脚本分析 ##### 3.1 游戏脚本基础 在...

    unity3d游戏开发之发射子弹的源代码.docx

    Unity3D 游戏开发之发射子弹的源代码解析 在本文中,我们将详细分析 Unity3D 游戏开发中的发射子弹机制,并提供相关的代码实现细节。 Unity3D 游戏开发中的发射子弹机制 在 Unity3D 游戏开发中,发射子弹是一种...

    Unity3D脚本中文教程Javascript版本

    每一章都会详细介绍相关类和方法的使用,以及实际应用示例,帮助开发者逐步掌握Unity3D的JavaScript脚本开发。 通过这个教程,学习者将能够掌握Unity3D中JavaScript的基本用法,理解游戏物体、组件、事件和交互的...

    [多媒体/3D 动画/游戏] Unity3D游戏编程基础入门班 by 泰课在线(价值200元)[高清完整版][AVI+TS][1.43GB]

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。 Unity3D的PC插件安装量达到2 亿...

    Unity3D开发

    根据提供的信息,我们可以总结出以下关于Unity3D开发的相关知识点: ### Unity3D概述 Unity3D是一款由Unity Technologies开发的跨平台游戏引擎,被广泛应用于游戏开发、虚拟现实(VR)、增强现实(AR)等领域。它...

    Unity3d中文API文档

    Unity3D是一款强大的跨平台游戏开发引擎,广泛应用于制作2D、3D游戏以及虚拟现实(VR)和增强现实(AR)项目。Unity3D的API(Application Programming Interface)是其核心部分,提供了丰富的功能接口,让开发者能够构建...

    Unity3D游戏开发之子弹追踪和协程.pdf

    Unity3D游戏开发之子弹追踪和协程应用 本文将对Unity3D游戏开发中的子弹追踪和协程技术进行详细的分析和解释。 一、子弹追踪技术 子弹追踪技术是游戏开发中常用的技术之一,它可以使子弹在游戏中追踪敌方的移动...

    Unity3D游戏开发之射线、角色控制器.pdf

    Unity3D游戏开发之射线、角色控制器 Unity3D游戏开发中,射线和角色控制器是两个非常重要的概念。射线是一种游戏中的子弹,它在3D世界中发射的一条无终点的线,用于检测游戏对象之间的碰撞。角色控制器是 Unity3D ...

    unity3d开发教程完整讲义.pptx(共145页,含demo)

    ### Unity3D开发教程知识点概览 #### 一、Unity编辑器基础介绍 - **工程向导面板**:这是启动Unity后首先接触到的部分,它帮助开发者新建项目或打开已有项目,同时也是管理项目版本的重要界面。 - **Unity编辑器...

    UNITY3D常用脚本

    Unity3D是一款强大的跨平台游戏开发引擎,广泛用于制作2D和3D游戏、实时三维交互内容以及虚拟现实应用。这个压缩包中的“UNITY3D常用脚本”包含了一些JavaScript和C#语言编写的Unity3D脚本,这些脚本在实际项目中...

    Unity3D设计模式之观察者模式

    ### Unity3D设计模式之...观察者模式是Unity3D等游戏开发中常用的设计模式之一,它能够帮助我们更好地组织代码、提高代码的可维护性和扩展性。通过合理的设计和实现,可以充分发挥观察者模式的优势,避免其潜在的问题。

    Unity3D 发射器弹弓橡皮筋

    在游戏开发领域,物理模拟一直是提升游戏真实感与互动性的重要手段之一。《愤怒的小鸟》作为一款经典的物理游戏,其成功之处就在于它巧妙地利用了Unity引擎的强大功能,实现了丰富的物理效果。其中最具标志性的莫...

Global site tag (gtag.js) - Google Analytics