mel這個(gè)東西靠教程光明白是遠(yuǎn)遠(yuǎn)不夠的,一定要多加練習(xí),這樣不斷的總結(jié)經(jīng)驗(yàn)教訓(xùn)才能有所提高。
數(shù)組也分 整數(shù)數(shù)組,小數(shù)數(shù)組,字符串?dāng)?shù)組
其實(shí)數(shù)組就好比我們在maya場景中選擇了多個(gè)對象打組是一個(gè)道理,在mel中我們可以將數(shù)字和字符串進(jìn)行打組后進(jìn)行統(tǒng)一操作
如整數(shù)數(shù)組里面可能有很多數(shù)字 1 3 5 7 0 等,可以理解為將這些數(shù)字打了一個(gè)組
小數(shù)數(shù)組也是如此 1.2 3.6 6.8 3.4 將這四個(gè)數(shù)字進(jìn)行了打一個(gè)組
字符串?dāng)?shù)組 就是將字母或者字符串打組 hi hello maya ok 將這四個(gè)單詞打組
數(shù)組在mel中的表示方式如下,我以整數(shù)數(shù)組為例
{
int $a [] = {3, 13, 17,37};
print $a;
}
上面我們做了一個(gè)整數(shù)數(shù)組的簡單表達(dá)方式。int上節(jié)課講過是代表整型變量 定義一個(gè)整型變量a在a的后面有一個(gè)[]意思就是告訴系統(tǒng)這個(gè)變量是一個(gè)數(shù)組,在等號(hào)后面大括號(hào)中的內(nèi)容就是這個(gè)數(shù)組的內(nèi)容。大家可以執(zhí)行這條語句看看maya的反饋信息是是如何顯示的,我們使用print反饋數(shù)組信息,得到數(shù)組列表。
但是如果我們要調(diào)用數(shù)組中的單獨(dú)的某一個(gè)數(shù)字我們該怎么操作呢?這就需要我們執(zhí)行數(shù)組下標(biāo)操作。大家要注意數(shù)組我們上面寫的數(shù)組語句中的數(shù)組內(nèi)容標(biāo)號(hào)是從0開始的。也就是說{3, 13, 17,37}數(shù)組中第一個(gè)數(shù)字3的下標(biāo)為0以此類推,13的下標(biāo)為1等等。
如果我們要調(diào)用上面數(shù)組中的第三個(gè)數(shù)字17,我們要執(zhí)行如下操作
{
int $a [] = {3, 13, 17,37};
print $a[2];
}
大家在mel執(zhí)行上面的語句后反饋結(jié)果為17,這個(gè)結(jié)果是我們想要的
同樣我們也可以對數(shù)組重新賦值,這個(gè)道理就好比是,我們在maya場景中建立一個(gè)空組,在這個(gè)空組中我們可以隨意的添加和更換組中的元素是一個(gè)道理
{
int $a [] = {3, 13, 17,37};
print $a;
}
上面這個(gè)語句我們只是對這個(gè)數(shù)組的初始化,好比我們在maya場景中建組,組中已經(jīng)包含了這些對象,我要更換這個(gè)組里面的內(nèi)容我們要執(zhí)行如下操作
{
int $a [] = {3, 13, 17,37};
$a = {47,98,103,111};
print $a;
}
我們在mel中執(zhí)行上面的語句,發(fā)現(xiàn)我們將變量$a數(shù)組的原內(nèi)容3,13,17,37更改為47,98,103,111。如果我們只想更改數(shù)組中的其中一個(gè)數(shù)值的話我們可以進(jìn)行如下操作
{
int $a [] = {3, 13, 17,37};
$a[2] = 8;
print $a;
}
我們執(zhí)行上面的語句發(fā)現(xiàn)我們已經(jīng)將數(shù)組中的第三個(gè)數(shù)字17,改為了數(shù)字8。如果我們要?jiǎng)h除數(shù)組中的某一個(gè)數(shù)字的話,我們可以執(zhí)行如下操作
{
int $a [] = {3, 13, 17,37};
$a = {3,13,37};
print $a;
}
執(zhí)行上面的操作我們就將數(shù)組中的17刪除掉了。如果我們要查看數(shù)組中第四個(gè)數(shù)字的話,我們執(zhí)行下面的語句
{
int $a [] = {3, 13, 17,37};
$a = {3,13,37};
print $a[3];
}
在mel中的反饋值為0,因?yàn)榻?jīng)過我們的更改刪除了數(shù)組中的17,因此就沒有了第四個(gè)數(shù)字,這個(gè)數(shù)組中只有三個(gè)數(shù)字。所以反饋值為0。
同樣小數(shù)數(shù)組和字符串?dāng)?shù)組也是同樣道理
小數(shù)數(shù)組如下
{
float $a [] = {3.1, 13.5, 17.2,37.3};
print $a;
}
字符串?dāng)?shù)組如下
{
string $a [] = {"maya", "ok", "autodesk","good"};
print $a;
}
如果在我們數(shù)組中存在非常多的數(shù)字和字符串,我們需要統(tǒng)計(jì)數(shù)組內(nèi)元素的數(shù)量的時(shí)候我們可以通過size的操作來完成,如下
{
string $a [] = {"maya", "ok", "autodesk","good"};
print `size $a`;
}
執(zhí)行上述操作,mel反饋值為 4。注意在print打印反饋值后面我使用了`size $a`。因?yàn)閟ize是一個(gè)命令,所以我們在使用命令執(zhí)行另一個(gè)命令的時(shí)候或者將命令作為字符串定義的時(shí)候需要用``將命令標(biāo)注起來。這個(gè)符號(hào)就是鍵盤波浪線下面的點(diǎn)。
如果想清空數(shù)組,我們可以通過執(zhí)行clear的操作來執(zhí)行清空數(shù)組,使用方法如下
{
string $a [] = {"maya", "ok", "autodesk","good"};
clear $a;
print `size $a`;
}
大家執(zhí)行上面的語句,我們使用print `size $a`;打印返回值,返回值為0,說明數(shù)組已經(jīng)被清空。
使用字符串?dāng)?shù)組應(yīng)有操作的比較多,可以通過字符串?dāng)?shù)組提取場景中的元素列表
我們在場景中建立四個(gè)球體,分別命名為 a b c d。我們可以通過字符串?dāng)?shù)組將選擇的球體打印出名字。我們執(zhí)行如下操作
{
string $a [] = `ls -sl`;
print $a;
}
我們選擇場景中的 a b c d 的任何一個(gè)或者多個(gè)球體,執(zhí)行上面的語句就能將我們選擇的球體名稱打印出來。其中在上面的語句中我使用了ls -sl 這個(gè)命令,這個(gè)命令的意思就是,選擇的對象元素的意思,因?yàn)閙aya場景中的對象命名都是本身就是字符,選擇多個(gè)對象,所以我們要使用字符串?dāng)?shù)組。