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对象,直接使用面板拖拽赋值。
MonoBehaviour介绍(Unity3D开发之一)的更多相关文章
- 跟我从零基础学习Unity3D开发--NGUI入门基础
英雄联盟(撸啊撸) QQ飞车 魔兽世界等等相信大家都玩过游戏吧,玩过那UI知道是什么吧?UI可能说得有点专业的话那么游戏中那些属性面板例如: 现在对UI有一定认识了吧!回想一下您玩过的游戏就一定知道什 ...
- 【Unity3D】Unity3D开发《我的世界》之六、创建地形(视频 + 源码)
转载请注明出处:http://www.cnblogs.com/shamoyuu/p/unity_minecraft_06.html 一.引入LibNoise 虽然Unity3D里也有一个Mathf.P ...
- 添加启动游戏过渡场景Default Splash Scene(Unity3D开发之十三)
添加启动游戏过渡场景Default Splash Scene(Unity3D开发之十三) 猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blo ...
- unity3d开发实战《啪啪三国》技术详解!
去年11月,上海火溶网络CEO王伟峰以其第一款3d手游产品<啪啪三国>为例,着重讲解了unity3D手机网游开发的经验,其中涉及了团队组成.人员要求.常见的unity3d开发遇到的坑及解 ...
- 菜鸟在线教你用Unity3D开发VR版的Hello World
大家好,我是菜鸟在线的小编.这篇短文将告诉大家如何用Unity3D开发VR版的Hello World. 1开启SteamVR并连接Vive设备 (a)登录Steam客户端,并点击右上角的VR按钮,这时 ...
- Unity2016 Unity3D开发VR游戏的经验
http://z.youxiputao.com/articles/8313 在4月12日的Unite 2016大会上,暴风魔镜高级产品经理吴涛分享他用Unity3D开发VR游戏的经验,以下为分享实录: ...
- Unity3d开发IOS游戏 基础
Unity3d开发IOS游戏 基础 @阿龙 - 649998群 1.先说明两个问题,我在WIN7下面的U3D里面,用了雅黑字体,但是导出为ios后,字体就看不见了,这是为什么呢?这是需要在MAC下找 ...
- 我的VSTO之路(四):深入介绍Word开发
原文:我的VSTO之路(四):深入介绍Word开发 在上一篇文章中,我介绍了Word的对象模型和一些基本开发技巧.为了更好的介绍Word插件开发,我为本文制作了一个Word书签的增强版,具体功能是让用 ...
- Unity3D开发必备神器(Visual Studio Tools for Unity)
Unity3D开发必备神器(Visual Studio Tools for Unity) 开发Unity3D程序你用的什么IDE呢? 1.MonoDevelop 2.VS 可能你的回答是这样的,我用的 ...
- mxgraph进阶(二)mxgraph的初步介绍与开发入门
mxgraph的初步介绍与开发入门 前言 由于小论文实验需求,需要实现根据用户日志提取出行为序列,然后根据行为序列生成有向图的形式,并且连接相邻动作的弧上标有执行此次相邻动作的频次.为此,在大师兄徐凯 ...
随机推荐
- hdu 5591 BestCoder Round #65(博弈)
题意: 问题描述 ZYBZYB在远足中,和同学们玩了一个“数字炸弹”游戏:由主持人心里想一个在[1,N][1,N]中的数字XX,然后玩家们轮流猜一个数字,如果一个玩家恰好猜中XX则算负,否则主持人将告 ...
- kafka快速入门
一.kafka简介 kafka,ActiveMQ,RabbitMQ是当今最流行的分布式消息中间件,其中kafka在性能及吞吐量方面是三者中的佼佼者,不过最近查阅官网时,官方与它的定义为一个分布式流媒体 ...
- spring+hibernate+struts2零配置整合
说句实话,很久都没使用SSH开发项目了,但是出于各种原因,再次记录一下整合方式,纯注解零配置. 一.前期准备工作 gradle配置文件: group 'com.bdqn.lyrk.ssh.study' ...
- if(/专线$/.test(name))讲解
如图: 这条语句的意思是:匹配以"专线"结尾的name字符串,满足条件的返回true,否则返回false
- 运行C++程序是出现错误:cannot open Debug/1.exe for writing
今天,打开VC6.0环境编了个小程序,谁知给我报了“cannot open Debug/1.exe for writing”这样一个错,然后,我就纳闷了,这是什么错丫? 想了半天,后想通,为什么会这样 ...
- display显示方式
元素的diplay显示方式有多种,隐藏.块级.内联.内联-块级. 1.display:none 隐藏 2.display:block; 表示块级元素. 块级元素会自动在前面和后面加上换行,并且在其 ...
- C语言 字符串 字符串处理操作 字符串与函数
字符数组的定义和初始化 宏常量+1 强调了字符串的最大强度 推荐忽略长度的定义 不能对所指向的存储单元内容修改,除非是字符串数组的定义 因为指针变量指向的是字符串数组的值,可以被修改. 未初始化 字 ...
- jdk1.7和jdk1.8区别
转自:http://www.2cto.com/kf/201307/225968.html 本文是我学习了解了jdk7和jdk8的一些新特性的一些资料,有兴趣的大家可以浏览下下面的内容. 官方文档:ht ...
- 用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- CustomYieldInstruction 自定义中断指令
ActionScript3脚本引擎为了方便热更新逻辑开发,提供的从脚本继承Unity类库功能在一些情况下可以提供开发的便利. 这次来建立一个示例,演示一下如何在脚本中自定义协程中断指令 Unity中的 ...
- 解决使用web开发手机网页关于分辨率被缩放的坑
问题的产生 因为各方面原因,要用网页做界面,开发一个APP.内核使用的是腾讯的x5内核. 把外壳交给前端和设计测试的时候,都汇报:状态栏的颜色太不搭配了,要求可修改 遂启用了安卓4.4版本开始支持的沉 ...