Unity3D脚本中文系列教程(五)
http://dong2008hong.blog.163.com/blog/static/4696882720140302848544/?suggestedreading&wumii
Unity3D脚本中文系列教程(四)Array 类 数组允许你将多个对象存储在一个变量中。 Array类只能用于JavaScript 。更多关于C#或JavaScript中ArrayLists ,字典或哈希表的信息参考MSDN 。 这是一个基本的例子,说明可以使用一个数组类做什么function Start( ){var arr = new Array ( ) ; arr.Push ("Hello"); //添加一个元素 Print(arr[ 0]); //打印第一个元素 arr length = 2 ; //调整数组大小arr [ 1] = "World"; //将“World”赋给第二个元素 for (var value : String in arr) //遍历这个数组 {Print ( value );}} Unity中有两种类型的数组,内置数组和普通的JavaScript数组。 内置的数组(原始的.NET数组),是非常快速和有效的但是它们不能被调整大小。 它们是静态类型的,这允许它们在检视面板中被编辑。这是如何使用内置数组的简单例子。 //在检视面板中公开一个浮点数组,你可以在那里编辑它 var value : float[ ]; function Start ( ) {//遍历数组for ( var value in values){print ( value );}//因为我们不能调整内置数组的大小//我们必须重新创建一个数组来调整它的大小value = new float[ 10 ];value[ 1 ] = 5.0;//给第二个元素赋值 } 内置数组在性能相关的代码中非常有用的(使用Unity的JavaScript和内置数组可以非常容易使用mesh interface在一秒内处理两万个顶点。) 另一方面,普通的JavaScript数组可以调整大小,排序并可以做所有你期望的数组类的操作。JavaScript数组不显示在检视面板中。你可以容易地在JavaScript数组和内置数组之间转换。 function Start ( ) {var array = new Array ( Vector3(0,0,0),Vector3(0,0,1));array .Push (Vector3 (0,0,2));array .Push (Vector3 (0,0,3));//拷贝js数组到内置数组var builtinArray : Vector3[ ] = array . ToBuiltin ( Vector3 );//将内置数组赋给js数组var newarr = new Array ( builtinArray );//newarr与array 包含相同的元素 print ( newarr ); } 注意按照Unity的命名规则下面所有函数均大写开头。为方便JavaScript用户 , Unity数组类也接受小写函数。变量◆ var length : int描述:数组的长度属性,返回或设置数组中元素的数量。 function Start ( ) {var arr = Array ( "Hello" , "World" ) ;print (arr . length ) ; //打印两个arr . Length = 5 ; //调整数组的大小为5 } 函数◆ function Add ( value : object ) : void描述:添加 value 到数组末端。var arr = new Array ("Hello"); arr.Add (" World "); Print ( arr ); //打印"Hello ","World" ◆ function Clear ( ) : void描述: 清空数组。 数组的长度将为零。 var hello = new Array ("Hello ","World "); hello.Clear ( ) ; //现在hello包含零个元素 ◆ function Concat ( array :Array , optionalArray0: Array, optionalArray1 : Array):Array描述:连接两个或多个数组。这个方法不会改变已有的数字并返回连接后的数组拷贝 function Start ( ){var arr = new Array ("Hello","World"):var arr2 = new Array ("!");var joined = arr.Concat ( arr2 ); //现在jointed包含所有3个字符串Print ( joined ); //打印"Hello","World","!" }◆ function Join ( seperator :string ) : String描述:链接数组内容为一个字符串。元素将被seperator字符串分割,并返回数组的拷贝 function Start ( ){var arr = new Array ("Hello" , "World");print ( arr . join (" , "));//打印"Hello,World" }◆ function Pop ( ) : object描述:移除数组最后一个元素并返回它。var arr = new Array ("Hello ","World");arr . Pop ( );print ( arr );//只打印"Hello" ◆ function Push (value : object) : int描述: 添加value到数组末端。并返回新数组长度。 var arr = new Array ("Hello"); arr.Push ("World"); print ( arr );//打印"Hello","World" ◆ function RemoveAt (index : int ) : void描述:从数组中移除索引为index的元素。 var arr = new Array ("Hello" , " and good morning" , "World "); arr.Remove ( 1 ) ; //移除 "and good morning" print ( arr );//打印 " Hello World " ◆ function Reverse () : Array描述:颠倒数组中所有元素顺序。 var hello = new Array (" Hello " ," World ") ; hello Reverse( ) ; print (hello);//打印World,Hello ◆ function Shift ( ) :object描述:移除数组的第一个元素并返回它。 var arr = new Array ( " Hello " , " World "); arr . Shift ( ) ; print ( " World " ) ; //现在arr只包含" World " ◆ function Sort( ) : Array描述:排序所有数组元素 var hello = new Array ( " e " ," a " ," b "); hello . Sort ( ) ; print ( hello ) ;// 打印 a ,b ,c ◆ function Unshift ( newElement : object , optionalElement : object ) : int描述: Unshift 添加一个或多个元素到数组的开始位置并返回新的数组长度。 var arr = new Array (" Hello "," World "); arr . Unshift (" This "," is "); print ( arr ) ;//打印 This,is,Hello,World BitStream 类BitStream 类表示序列化的变量,打包到一个流中。 数据可以被序列化,传输,然后远端使用这个类接受。参考 Network View component reference 获取关于网络同步的信息和Network. OnSerializeNetworkView函数获取更多信息。变量◆ var isReading : bool描述:这个BitStream现在在被读吗? 参考Network. OnSerializeNetworkView◆ var isWriting : bool描述:这个BitStream现在在被写吗? 参考Network. OnSerializeNetworkView函数◆ function Serialize (ref value : bool ) : void ◆ function Serialize (ref value : char ) : void ◆ function Serialize (ref value : short) : void ◆ function Serialize (ref value : int ) : void ◆ function Serialize (ref value : float , maxDelta : float = 0.00001F) : void ◆ function Serialize (ref value : Quaternion, maxDelta : float = 0.00001F) : void ◆ function Serialize (ref value : Vector3, maxDelta : float = 0.00001F) : void ◆ function Serialize (ref value : NetworkPlayer ) : void ◆ function Serialize (ref viewID: NetworkViewID ) : void描述:BitStream类可以序列化几个不同类型的变量。 包含:bool , char , short , int , float , Quaternion , Vector3 和 NetworkPlayer 注意serialize ( char )系列化一个字节,因此,它只能用于 0......255之间的字符。BoneWeight 结构网格上一个顶点的蒙皮骨骼权值 每个被蒙皮的点至多有四个骨头。所有权值的和应该为1。权值和骨骼索引应该被以权值递减的顺序定义。如果一个顶点被少于四个骨骼影响,剩下的权值应该为0。 参见:Mesh.boneWeights变量。变量◆ var boneIndex0 : int描述:第一个骨骼的索引。 参见:weight0 .◆ var boneIndex1 : int描述:第二个骨骼的索引。参见:weight1.◆ var boneIndex2 : int描述:第三个骨骼的索引。 参见:weight2 .◆ var boneIndex3 : int描述:第四个骨骼的索引。 参见:weight3 .◆ var weight0 : float描述:第一个骨骼的蒙皮权值。 参见:boneIndex0.◆ var weight1 : float描述:第二个骨骼的蒙皮权值。 参见:boneIndex1.◆ var weight2 : float描述:第三个骨骼的蒙皮权值。 参见:boneIndex2.◆ var weight3 : float描述:第四个骨骼的蒙皮权值。 参见:boneIndex3.Bounds 结构代表一个轴对齐包围盒。 一个轴对齐包围盒,简称为AABB,是与坐标轴对齐的box并且完全包围一些物体。因为这个box不会绕着轴旋转,所以它可以只用center和extents定义,或者用min和max点定义。 Bounds被Collider.bounds,Mesh.bounds,Renderer.bounds使用。变量◆var center : Vector3描述:包围盒子的中心◆var extents : Vector3描述:box的宽度。这个总是size的一半◆var max : Vector3描述:box的最大点。这个总是等于center + extents。◆var min : Vector3描述:box的最小点。这个总是等于center - extents。◆var size : Vector3描述:box的总大小。这个总是extents的二倍。 size.x是宽度, size.y 是高度, size.z 是长度。构造函数◆static function Bounds ( center : Vector3 , size : Vector3 ) : Bounds描述:用给定的center和总size创建新的Bounds。Bounds extents将是给定size的一半。 var bounds = Bounds ( Vector3.zero , Vector3(1,2,1));//在原点常见柱状包围盒 函数◆function Contains ( point : Vector3 ) : bool描述:point 包含在这个包围盒中吗 ?◆function Encapsulate ( point : Vector3 ) : void描述:增大Bounds以包含这个point. ◆function Encapsulate ( bounds : Bounds ) : void描述:增大bounds来封装另一个bounds。◆function Expand ( amount : float ) : void描述:沿着每个面按照amount增加它的size来扩展这个bounds。◆function Expand ( amount : Vector3 ) : void描述:沿着每个面按照amount增加它的size来扩展这个bounds。◆function IntersectRay ( ray : Ray ) : bool描述:ray与这个包围盒相交吗?◆function IntersectRay ( ray : Ray , out distance : float ) : bool描述:ray与这个包围盒相交吗? 当IntersectRay返回真,distance将是到射线源点的距离。◆function SetMinMax ( min : Vector3, max : Vector3 ) : void描述:设定边界为盒子的min和max值。 使用这个函数要比分别指定min和max更快。◆function SqrDistance ( point : Vector3 ) : float描述: 点到这个包围盒的最小平方距离。◆function ToString ( ) : string描述:返回一个格式化好的字符串collision 类描述碰撞 Collision 信息被传递到Collider . OnCollisionEnter , Collider . OnCollisionStay和Collider.OnCollisionExit事件。参见: ContactPoint.变量◆var collider : Collider描述:碰撞到的Collider ( 只读 ). 为了得到所有被碰撞到的碰撞器的细节,你需要迭代接触点( contacts属性)。◆var contacts : ContactPoint [ ]描述:接触点由物理引擎产生。 每个contact包含一个接触点,法线和两个发生碰撞的碰撞器(参考ContactPoint)。在OnCollisionStay或者OnCollisionEnter内可以确保contacts有至少一个元素。 function OnCollisionStay ( collision : Collision ){//检查碰到碰撞器是否有刚体//然后使用一个力for ( var contact : ContactPoint in collision . contacts ){print ( contact.thisCollider . name + "hit" + contact . otherCollider .name );//可视化接触点 Debug.DrawRay ( contact . point , contact . normal, Color .white ) ;} } //一枚手榴弹,在击中一个表面时初始化一个爆炸预设,然后销毁它 var explosionPrefab : Transform; function OnCollisionEnter( collision : Collision ){ //旋转这个物体使y轴面沿着表面法线的方向var contact = collision . contact [ 0 ];var rot = Quaternion . FromToRotation ( Vector3.up , contact . normal ) ;var pos = contact . point ;Instantiate ( explosionPrefab , pos , rot ) ;Destory ( gameObject );//销毁这个投射物 }◆var gameObject : GameObject描述:/ gameObject / 是与之碰撞的物体(只读)◆var relativeVelocity : Vector3描述: 两个碰撞物体的相对线形速度(只读)。 //当以较大的速度碰到一个物体时播放声音 function OnCllisionEnter ( collision : Collision ){if ( collision . relativeVelocity . magnitude > 2 )audio .Play ( ); }◆var rigibody : Rigidbody描述:碰撞到的Rigidbody(只读),如果碰到的物体是一个没有附加刚体的碰撞器,返回null //让所有碰到的刚体向上飞 function OnCollisionStay ( collision : Collision ){//检查碰到的碰撞器是否有一个刚体,然后使用力if ( collision . rigidbody ){collision . rigidbody .AddForce ( Vector3 . up * 15 ) ;} }◆var transform : Transform描述:碰撞到的物体的Transform(只读)。 如果碰到一个带有Rigidbody的碰撞器,transform将是所有附加刚体的变换。如果碰到了一个没有刚体的碰撞器,transform将是所有附加碰撞器的变换。color 结构表示RGBA颜色。 这个结构被用在整个Unity中传递颜色。每个颜色组件是一个0到1之间的浮点数。 组件(r ,g ,b )在RGB颜色空间内定义一个颜色。Alpha组件(a)透明性 - alpha为0是完全不透明,alpha为1是完全透明。变量◆var a : float描述:颜色的Alpha组件。 var color = Color . white ; color . a = 0 ;◆var b : float描述:颜色的蓝色组件。 var color = Color .white; color .b = 0 ;◆var g : float描述:颜色的绿色组件 var color = Color . white ; color . g = 0 ;◆var grayscale : float描述:颜色的灰度值(只读) var color = Color ( 3 , 4 ,6 ) ; print ( color . grayscale ) ;◆var r : float描述:颜色的红色组件。 var color = Color . white ; color . r = 0◆var this [ index : int ] : float描述:分别使用[ 0 ] ,[ 1 ] ,[ 2 ] ,[ 3 ]访问r ,g , b ,a组件。 Color p ; p [ 1 ] = 5 ;//与p .g = 5相同 构造函数◆static function Color ( r : float , g : float , b : float, a: float ) : Color描述:用给定的 r , g , b , a ,组件构建一个新的颜色。 var color = Color ( 0.2 , 0.3 , 0.4 , 0.5 ) ;◆static function Color ( r : float , g : float , b : float ) : Color描述:用给定的 r , g , b 组件构建一个新的颜色并设置 a 为1 var color = Color (0.2 , 0.3 , 0.4 ) ;函数◆function ToString ( ):string描述:返回格式化好的这个颜色的字符串。print ( Color .white ) ;类变量◆static var black : Color描述:黑色。 RGBA为( 0 , 0 , 0 , 1 ).◆static var blue : Color描述:蓝色。 RGBA为( 0 , 0 , 1 , 1 ).◆static var clear : Color描述:完全透明。 RGBA为( 0 ,0, 0, 0 ).◆static var eyan : Color描述:青色。 RGBA为( 0 , 1 , 1 , 1 ). ◆static var gray : Color描述:灰色。RGBA为 ( 5 , 5 , 5 , 1 ).◆static var green : Color描述:绿色。RGBA为(0, 1 , 0, 1 ).◆static var grey : Color描述:英式拼法为gray。RGBA为(0.5 , 0.5 , 0.5 , 1 ).◆static var magenta : Color描述:紫红色。RGBA为(1 , 0 , 1 , 1 ).◆static var red : Color描述:全红。RGBA为(1 , 0 , 0, 1 ).◆static var white : Color描述:全白。RGBA为(1 , 1 , 1 , 1 ).◆static var yellow : Color描述:黄色。RGBA是怪异的(1 , 235/255 , 4/255 , 1 ),但是这个颜色看起来非常好!类方法◆static function Lerp ( a : Color , b : Color , t : float ) : Color 描述:在颜色a和颜色b之间按照t插值。 / t /被限定到0 和1之间,当t为0时返回a . 当t为1时返回b◆static operator * ( a : Color , b : Color) : Color描述:乘两个颜色,每个组件被分别乘。◆static operator * ( a : Color , b : float) : Color描述:用浮点数b乘以颜色a。每个组件被分别乘。◆static operator * ( a : float , b : Color) : Color描述:用浮点数b乘以颜色a。每个组件被分别乘。◆static operator + ( a : Color , b : Color) : Color描述:加两个颜色,每个组件被分别加。◆static operator - ( a : Color , b : Color) : Color描述:从颜色a中减去颜色b。每个组件被分别减。◆static operator / ( a : Color , b : float) : Color描述:乘用浮点数b除以a。每个组件被分别除。◆static implicit function Color ( v : Vectro4 ) : Color描述:Colors可以被隐式转化为Vector4,或由它转化而来。◆static implicit function Vector4 ( c : Color ) : Vector4描述:Colors以被隐式的转化为Vector4,或由它转化而来。ContactPoint 结构描述:碰撞发生的接触点。 接触点被存储在collision结构中,参见collision , collision . OnCollisionEnter, Collision . OnCollisionStay , Collision . OnCollisionExit.变量◆var normal : Vector3描述:接触点的法线◆var otherCollider : Collider描述:碰撞中的另一个碰撞器◆var point : Vector3描述:接触点◆var thisCollider : Collider? 描述:碰撞中的第一个碰撞器ControllerColliderHit 类ControllerColliderHit被CharacterController . OnControllerColliderHit使用来给出详细的关于碰撞和如何处理它们的信息。
Unity3D脚本中文系列教程(五)相关推荐
- Unity3D脚本中文系列教程(七)
http://dong2008hong.blog.163.com/blog/static/4696882720140311445677/?suggestedreading&wumii Unit ...
- Unity3D脚本中文系列教程(八)
◆ static var matrix : Matrix4x4 描述:设置用于渲染所有gizmos的矩阵. 类方法 ◆ Static function DrawCube(center:Vector3, ...
- 自动化编辑器零代码手机RPA脚本开发系列教程五
自动化编辑器 基础知识 条件 官网下载地址自动化编辑器 才发现之前讲过条件了 这次再次重新讲一次,就当我忘了之前讲的是啥了 条件是自动化编辑的基本单元,也是自动化编辑器最核心的东西,所以讲两次也 ...
- Linux求平方脚本,Linux Shell脚本系列教程(五):数学运算
这篇文章主要介绍了Linux Shell脚本系列教程(五):数学运算,本文讲解了使用let.(())和[]进行算术运算.使用expr进行算术运算.使用bc进行算术运算三种方法,需要的朋友可以参考下 在 ...
- python网页填表教程_PythonSpot 中文系列教程 · 翻译完成
原文:PythonSpot Python Tutorials 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. 在线阅读 ApacheCN 学 ...
- JavaBeginnersTutorial 中文系列教程·翻译完成
原文:JavaBeginnersTutorial 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. 在线阅读 ApacheCN 学习资源 目录 ...
- PythonSpot 中文系列教程 · 翻译完成
原文:PythonSpot Python Tutorials 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. 在线阅读 ApacheCN 学 ...
- C#微信公众号开发系列教程五(接收事件推送与消息排重)
C#微信公众号开发系列教程五(接收事件推送与消息排重) 原文:C#微信公众号开发系列教程五(接收事件推送与消息排重) 微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续 ...
- JavaTutorialNetwork 中文系列教程 · 翻译完成
原文:JavaTutorialNetwork 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. 在线阅读 ApacheCN 学习资源 目录 J ...
最新文章
- java中String new和直接赋值的区别
- jquery:字符串转json对象,json对象转字符串
- 基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案
- 首届魔都ArchData技术峰会进入倒计时
- python 代码命令大全-Python常用命令最全合集
- 2018最新最全百度网盘限速解决方法
- 压缩文件密码暴力破解——cRARk使用方法
- 360浏览器Linux版内核,360浏览器推出Linux版下载,主要特性解说
- 3D打印机之Marlin固件配置
- Sun选择Emulex助力完善Blade服务器
- 一路向往有光亮的地方-2015年终总结
- centos下kafka的安装和使用
- 4月想跳槽的同学,没有更好的选择,可以去美团
- 20230206 作业
- PAT甲级 英文单词汇总
- C++实现TTS文字语音朗读Microsoft Speech SDK
- 连锁酒店网络互联解决方案
- pyinstaller 把python编译成二进制
- 大数据建设意义_从宜信中台构架看企业大数据建设的意义
- 开源arduino可视化编辑器Ardublockly源码开发环境搭建
热门文章
- JavaWeb(十一)——登录注册小案例
- c++矩阵作为函数输入变量_C++实现矩阵乘法
- 图像处理--角点检测与匹配
- 如何将静态网页通过nginx访问
- 用vmware安装win7虚拟机(windows10系统)
- html iframe 播放视频播放,播放iframe视频点击链接javascript
- android webview 报错,Android WebView 5.x 系统下 Resources$NotFoundException异常处理
- python之穿越火线游戏代码_Python实现拼字游戏与代码重构
- 什么叫dfs文件服务器,什么是DFS(分布式文件系统)以及DFS的优点
- Python 网络爬虫笔记4 -- 信息标记与提取