在Unity中腳本是必不可少的組成部分,因為它將定義游戲的各種行為。Unity推薦使用的編程語言是JavaScript,但是C#或Boo同樣也可以。
Unity開發(fā)教程種類萬千钾军,下面我們介紹JavaScript的基本使用及腳本的API。
一绢要、命名規(guī)范
在開始之前吏恭,先說一下在Unity中的一些命名規(guī)范。
變量-首寫是小寫字母重罪。變量用來存儲游戲狀態(tài)中的任何信息樱哼。
函數(shù)-首寫是大寫字母。函數(shù)是一個代碼塊剿配,只需要寫一次搅幅,在需要的時候可以再次重用。
類-首寫是大寫字母呼胚∏烟疲可以被認為是函數(shù)的庫。
提示:當閱讀范例代碼或者Unity的API蝇更,要注意首寫字母沪编,這將有助于你更好的理解對象之間的關系。
二年扩、第一個腳本游戲
我們的第一個腳本游戲是在一個簡單的游戲場景中走動.
第一步:設置場景蚁廓,即在游戲場景中添加地面和游戲對象。
地面可由一個扁的Cube代替常遂。
創(chuàng)建一個Cube纳令,縮放新x挽荠,y克胳,z,為『5圈匆,0.1漠另,5』,它現(xiàn)在應該是一個大平板跃赚,在層次視圖中(Hierarchy View)重命名為『Plane』笆搓。
*游戲對象可由另一個Cube代替性湿。
*創(chuàng)建第二個Cube,將它放置在這個大平板的中心位置。如果在游戲視圖(Game View)看不到它們满败,那么改變主相機位置使它們可見肤频。重命名該物體為”Cube1”。
*還應該建立一個點光源,并且放在大平板之上算墨,使它們更清晰宵荒。
第一個腳本
要想讓游戲對象Cube1運動起來,就需要加入腳本净嘀。
通過控制主相機的位置來實現(xiàn)报咳,要做到這一點,我們現(xiàn)在要寫一個腳本來讀取鍵盤的輸入挖藏,然后把腳本和相機鏈接起來暑刃。
首先創(chuàng)建一個空腳本。
*選擇”Assets -> Create -> Javascript”并在項目面板重命名為“Move1”膜眠。
雙擊Move1腳本岩臣,它將打開,并且默認包含有Start()和Update()函數(shù)宵膨,我們將編寫的代碼插入這個函數(shù)婿脸,任何加入Update()函數(shù)中的代碼都將在每一幀(frame)執(zhí)行一次。
Update()函數(shù):這個函數(shù)在渲染每一幀之前被調用柄驻。這里是大部分游戲行為代碼被調用的地方狐树。
在Unity中為了移動一個游戲對象我們需要用transform來更改它的位置,屬于Translate鸿脓,這個Translate函數(shù)有x抑钟,y,z三個參數(shù)野哭,因為我們向通過光標健控制主相機在塔,我們只需要下面這些代碼,來決定按鍵按下后參數(shù)的變化拨黔。
function Update() {
transform.Translate(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
}123123
Input.GetAxis()函數(shù)返回-1或1的一個只蛔溃,例如在橫軸上左光標鍵映射為-1,右光標鍵映射為1篱蝇。
橫軸和豎軸是在輸入設置(Input Settings)中預先定義好的贺待。從Edit -> Project Settings -> input中很容易重定義按鍵映射。
現(xiàn)在我們的第一個腳本寫完了零截,怎么讓Unity的游戲對象具有這個腳本行為呢?
第一步: 首先點擊你希望應用此腳本的游戲對象麸塞,這里是主相機,你可以從層次視圖和場景視圖中選擇它涧衙。
第二步: 從菜單欄中Components -> Script -> Move1,將這個腳本賦予相機,你在檢視面板中看到主相機有Move1這個組件
提示:你也可以從項目視圖拖拽腳本到場景視圖的游戲對象具伍。
點擊播放按鈕運行游戲膳汪,你能通過光標鍵或W,A,S,D鍵來移動主相機。你也許注意到了祥绞,攝像機移動的有點太快了,讓我們來找一種更好的辦法來控制攝像頭的速度鸭限。
正如先前在update()函數(shù)里的代碼蜕径,相機的速度是按幀執(zhí)行的。然而我們需要游戲對象的移動按秒執(zhí)行败京。為了實習這一目標兜喻,我們需要將返回值乘以Input.GetAxis()函數(shù)中的Time。deltaTime:赡麦。
var speed = 5.0;
function Update() {
var x = Input.GetAxis("Horizontal") * Time.deltaTime * speed;
var z = Input.GetAxis("Vertical") * Time.deltaTime * speed;
transform.Translate(x, 0, z));
}123456123456
將上面的代碼更新到Move1腳本朴皆。
注意:Update()外的這個速度變量。這是所為的public變量泛粹,這個變量會在檢視面板中看到遂铡。它是很有用的,實際使用中可以方便的調整它的值晶姊,這比改變代碼來說方便的多扒接。