纳金网

标题: Unity3D脚本教程3:数组(Array类) [打印本页]

作者: markq    时间: 2012-3-8 15:36
标题: Unity3D脚本教程3:数组(Array类)
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));

     

     var builtinArray : Vector3[ ] = array . ToBuiltin ( Vector3 );  //拷贝js数组到内置数组

   

     var newarr = new Array ( builtinArray );   //将内置数组赋给js数组

   

     print ( newarr );   //newarr与array 包含相同的元素
    }
    注意按照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 ( ) bject   //  描述:移除数组的第一个元素并返回它。
    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
作者: 彬彬    时间: 2012-3-8 17:23
不错
作者: BU Secret    时间: 2012-3-9 17:46
看不懂
作者: 浩劫    时间: 2012-3-9 20:04





欢迎光临 纳金网 (http://wwww.narkii.com/club/) Powered by Discuz! X2.5