zoukankan      html  css  js  c++  java
  • 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 = 0var 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使用来给出详细的关于碰撞和如何处理它们的信息。
  • 相关阅读:
    修改profile出错后的补救
    ubuntu安装jdk
    创业的36条军规
    Oracle中慎用Like等通配符
    根据配置文件名读取配置文件的工具类方法
    Spring ThreadPoolTaskExecutor队列满的异常处理
    redis使用方法
    在windows 2008 R2中SQl Server 2008中代理启动失败的一个原因总结
    select 中添加option的注意
    javascript 函数对象
  • 原文地址:https://www.cnblogs.com/123ing/p/3912068.html
Copyright © 2011-2022 走看看