uc指令碼 2 陣列

2021-06-09 03:29:37 字數 2614 閱讀 1164

陣列使用以下語法宣告:

var int myarray[20]; // declares an array of 20 ints.

unrealscript僅支援一維陣列,但你可以通過自己來設定 行/列 的數學處理來模擬多維陣列。

動態陣列

先前我們所講的陣列是指靜態陣列。它意味著陣列的大小(陣列中有多少個元素)是在編譯時設定的並且是不能改變的。

動態陣列和靜態陣列都有以下共同的特徵:

為了適應陣列元素變化的需要,動態陣列提供了一種使靜態陣列具有在執行時改變元素數量的功能的方法。

如果想使用動態陣列,我們需要知道幾件事情。首先是變數的宣告。宣告乙個動態陣列和宣告其它的unrealscript變數是非常相似的(也就是var/local 型別 變數名 )。 對於動態陣列,型別可以使用關鍵字 array 來指定,後面跟著由尖括號括起的陣列型別。 如果陣列型別也包含尖括號(比如 class ),你必須在型別的結束括號和陣列的結束括號之間加入空格,否則編譯器會把這兩個結束括號作為>>操作符來處理。比如:

宣告乙個叫intlist的動態整型陣列:

var arrayintlist;

宣告乙個型別為class、名稱為players的動態陣列:

var array> players;

當指令碼開始執行時,intlist將從0元素開始。動態陣列所支援的方法允許我們向陣列中新增元素、取出元素及任意地增加或降低陣列的長度。呼叫這些方法的語法是(使用我們的intlist為例子):intlist.methodname()。以下是動態陣列提供的方法:

sort(sortdelegate): 使用 sortdelegate 來適當地對陣列的內容排序。 sortdelegate 的簽名應該和以下顯示的一樣:

長度變數動態陣列也有乙個變數叫length,它是指動態陣列的當前長度(元素的個數)。要想訪問length,通過使用我們的示例陣列,我們可以這樣操作:intlist.length我們不僅能讀取這個length變數,並且我們可以直接設定它,從而允許我們修改陣列中元素的數量。當您直接修改length變數時,在陣列長度中的所有改變都在陣列的末端發生。比如,如果我們設定 intlist.length = 5,然後我們再設定intlist.length = 10,那麼我們剛剛新增的額外的5個元素會新增到陣列的末端,同時保持我們原始的5個元素及其它們的值。如果我們降低length,元素也會被從陣列的末端拿掉。注意當您想乙個陣列增加元素時,不管是通過insert()函式還是通過增加長度,元素都會被初始化為它的變數型別的預設值(ints為0,類的引用為none等)。值得注意的是您也可以通過設定元素的索引比當前的length值大來增加動態陣列的長度。這將和您設定length的值為較大的值來擴充套件陣列是一樣的。

oldlength = array.length 

array.length = oldlength + 1

array[oldlength] = newvalue

array[array.length] = newvalue

array.additem(newvalue)

所有這些都是同乙個操作的等價形式。

注意,您不能同時增加陣列的長度並訪問陣列的成員。

array[array.length].mystructvariable = newval

這是無效的。

注意 – 動態陣列的成員length是不能通過'++', '--', '+=', or '-='來進行增量/減量運算的,也不能將length作為乙個輸出引數傳遞給乙個函式(那個函式能夠改變它的值)。由於這樣做使length不再是精確的,從而會導致記憶體洩露和崩潰;僅能通過使用 '=' 操作符來設定length(並設定設定乙個元素所在的索引大於length)來適當地修改動態陣列的實際長度。

注意: 不支援array型別!

最後需要注意的是 - 動態陣列是不能複製的。您可以通過可以複製陣列的函式來解決這個問題,並且具有兩個引數:乙個是動態陣列的乙個索引及那個索引處所儲存的值。然而,你也必須要考慮在客戶端和伺服器的一次更新時間間隔內元素不一樣的後果。

迭代動態陣列

動態陣列現在支援foreach=操作符來進行簡單的迭代操作。 基本語法是:

foreach arrayvariable(out arrayitem, optional out itemindex)

arrayitem必須和陣列中的元素是同一型別。如果提供了屬性,每次迭代都將索引值進行增量計算並輸出元素項及其索引值。

function iteratethrougharray(array somearray)

foreach somearray(arrayitem,index)

}

UC指令碼筆記

一.在uc指令碼中可以呼叫的函式 1.在uc中使用關鍵字function宣告並實現的函式,可以呼叫。因為,這裡相當於c 中普通的函式,並且uc指令碼之間相互呼叫函式不需要包含標頭檔案,只需要獲取對方uc類的類變數即可 2.在uc中使用關鍵字native function宣告的函式,在對應類.cpp中...

c 與unreal 的uc指令碼互動

舉例 1.在指令碼menumanager.uc檔案中實現函式 event loadfrontend 這個指令碼對應的c 檔案為 menumanager.cpp 2.修改完uc指令碼之後,我們要立刻進行編譯指令碼,方法如下 開啟cmd進入到unkgame.exe這個檔案的目錄,輸入命令 udkgame...

指令碼基礎2

在指令碼內 bin bash read p 請輸入乙個數字 num if num eq 60 then echo 猜對了 else echo 猜錯了 fi 這是乙個完整的但分值if條件語句,兩個動作必定執行乙個。if如果,then那麼,else否則,fi結尾。在指令碼內 bin bash read ...