猴子原创,欢迎转载。转载请注明:转载自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对象,直接使用面板拖拽赋值。
分享到:
相关推荐
继承层次:Object->Component->Behaviour->MonoBehaviour ...注意:复选框控件(在编辑中)仅仅会阻止Start、Awake、Update、FixedUpdate和OnGUI函数的执行,如果这些函数中没有一个出现,则复选框就不会显示。
Unity3D中基类MonoBehaviours的总结和整理
Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。 Unity3D的PC插件安装量达到2 亿...
最近有一个需求是要实现物体闪烁的效果,就像地下出现珍宝一样- -,运用还是比较广的,下面的例子只是一个参考,还有很多花式玩法等待大家开发。 思路 这个就比较简单了,就是设一个全局变量控制闪烁的间隔,然后...
重载虚函数:Unity3D中所有控制脚本的基类MonoBehaviour有一些虚函数用于绘制中事件的回调,也可以直接理解为事件函数,例如大家都很清楚的Start
unity3d命令字典 用于在自定义ScriptableObject和MonoBehaviour类中添加有序词典的库,只要键和值类型是可序列化的,就可以由Unity进行序列化。 $ yarn add rotorz/unity3d-ordered-dictionary 该软件包与工具兼容...
需要了解unity3d scripts脚本的来看看
Unity3D 5种单列方法 最简单的单例方法 A --- 继承于MonoBehaviour 升级版单例方法 B --- 继承于MonoBehaviour 单例方法 C --- 不继承于MonoBehaviour 最终版D --- 继承于MonoBehaviour(不随着场景切换而销毁) ...
敬畏团结AwesomiumUnity是旨在与Unity3D一起使用的第三方Awesomium包装器。 AwesomiumUnity允许您在Unity3D应用程序中显示和使用HTML文档。 支持HTML5,CSS和JavaScript,并且可以在可以使用常规Unity Texture2D的...
各种文件创建器-Unity3d插件包 自动带有带文件模板 您厌倦了为了创建文本文件而不得不打开文件浏览器吗?您觉得需要ScriptableObject而不是生成的Monobehaviour?你需要一个XML文档用于你的数据库吗?也许你不需要...
Monobehaviour Unity3d
然而,为了管理我们额外开启的线程,Unity3D将协同程序的调用放在了MonoBehaviour中,这样我们在编程时就可以方便的调用指定脚本中的协同程序,而不是
现在使用Si3在Unity中进行编程是一种非常流畅,流畅和愉快的体验。 =)程序员最终可以专注于他们的任务,而不是等待(有时还在战斗)外部IDE运行,加载正确的脚本,或跳转到正确的行。 主要特点: - C#,a.k.a ...
Unity3d可编辑字典Dictionary脚本 - Unity的inspector不会在inspector中公开Dictionary类, Tvalue> - Unity不序列化字典信息,因此按下播放或重新加载场景时,收集的所有字典数据都会丢失。 解决方案: - 为...
主要介绍了Unity通用泛型单例设计模式,分为普通型和继承MonoBehaviour,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
AssetList:場景中資源的列表,每一個資源都對應一個unity3D的gameobject Name:gameobject的名字,一個場景中不應該重名 Source:資源的物理路徑及檔案名 Position:gameobject的座標 Rotation:gameobject的旋...
MonoBehaviour类的使用
Unity3D-Python编辑器 在unity3d里使用python unity版本5.6.1 注意 我这是用@cesardeazevedo那里弄到的,然后我精简了一下,现在只需要放置一下就可以用了。操作如下:在游戏物体上绑定PyRun.cs在PyRun.cs上绑定Py...
本文实例为大家分享了Unity3D实现攻击范围检测的具体代码,供大家参考,具体内容如下 一、扇形攻击范围检测 using UnityEngine; using System.Collections; public class AttackCHeck : MonoBehaviour { //要攻击...
本文实例为大家分享了Unity3d简易五子棋源码,供大家参考,具体内容如下Unity3d部分对C#源码进行了改写简化:using UnityEngine;using System.Collections;public class chess : MonoBehaviour{ //四个锚点位置,...