查看: 1588|回复: 0
打印 上一主题 下一主题

Unity3D脚本中文教程2.3

[复制链接]

5552

主题

2

听众

8万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
11

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2012-5-16 14:29:16 |只看该作者 |倒序浏览
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 ( ) 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
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2025-6-16 05:42 , Processed in 0.066240 second(s), 28 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部