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使用来给出详细的关于碰撞和如何处理它们的信息。
  • 相关阅读:
    luogu P1833 樱花 看成混合背包
    luogu P1077 摆花 基础记数dp
    luogu P1095 守望者的逃离 经典dp
    Even Subset Sum Problem CodeForces
    Maximum White Subtree CodeForces
    Sleeping Schedule CodeForces
    Bombs CodeForces
    病毒侵袭持续中 HDU
    病毒侵袭 HDU
    Educational Codeforces Round 35 (Rated for Div. 2)
  • 原文地址:https://www.cnblogs.com/123ing/p/3912068.html
Copyright © 2011-2022 走看看