UnityScript快速入門
來源:程序員人生 發布時間:2014-09-29 08:00:01 閱讀次數:3100次
UnityScript原先被官方稱作用于U3D的JavaScript,但是較新一些的文檔都已經叫做UnityScript了,雖然JS的語法在UnityScript中幾乎都可以使用,但是UnityScript是一種具有靜態類型檢查且更加OOP的JS,所以完全可以把UnityScript當做一門新語言來學,當然,如果已經學會了JS,那么想學會UnityScript是相當快的。相比跑在瀏覽器上的JS,UnityScript無論在身為語言的設計上還是在運行能力上都要遠遠優于前者。
這篇快速入門教程將會著重講解UnityScript那些與JS不太一樣的地方,所以會比較適合從JS轉過來并且稍微有些編程基礎的編程人員,如果沒有JS的基礎那么建議先學一下JS,如果連編程基礎也沒有,那建議你還是先不要碰什么游戲引擎了~(^ ^)~
Chapter-1 嚴格模式
一般UnityScript源碼文件的第一行都要加上
#pragma strict
其實你也可以不加。加上的話會進入嚴格模式,這種模式會對JS超級隨意的動態特性加以限制。
Chapter-2 為變量靜態指定類型
UnityScript聲明變量的方式和JS一樣,都是用'var 變量名'的格式來聲明變量,但是UnityScript中可以通過'var 變量名 :類型'的格式來為聲明的變量指定明確的類型。下面是一些例子:
var num :int = 1; //整數型變量
var str :String = "hello UnityScript"; //字符串型變量
var player :GameObject; //游戲對象變量
Chapter-3 函數
因為UnityScript中可以為變量明確指定數據類型,所以可以再函數中為參數指定類型,而且也可以指定一個返回值:
function Add(x :int, y :int) :int {
return x + y;
}
如果沒有返回值,可以不用在參數列表后面加任何代碼。
Chapter-4 訪問控制
UnityScript允許像C++/Java那樣通過添加private或public關鍵字來設置變量、類或函數的訪問控制權限(也叫對外可見性),例如:
private var self :String = "myself"; //私有變量
public function GetName() { //共有函數
return "Nonull";
}
Chapter-5 面向對象和接口
UnityScript中的面向和Java非常相似,包括繼承和實現接口時所用的關鍵字也一樣哦。看看下面的例子就明白了:
public class Person {
private var name :String;
private var age :int;
public function Person(name :string, age :int) { //構造函數
this.name = name;
this.age = age;
}
public function Introduce() :String {
return "my name is: " + this.name + " and I am " + this.age.ToString() + " years old.";
}
}
public class Student extends Person {
public function Student(name :String) {
super(name);
}
//...
}
接下來是接口的:
public interface People {
function Speak();
function Study();
function Walk();
}
public class Child implements People {
public function Speak() {...}
public function Study() {...}
public function Walk() {...}
}
Chapter-6 事件函數
有一些特定的函數是用來處理Unity中特定的事件的,比如在游戲加載時要執行什么操作,在畫面幀更新的時候要執行什么操作,這些事件函數決定了腳本文件的大致執行結構,下面有一些常用的事件函數~
function Awake() {
}
function Start() {
}
function Update() {
//幀更新
}
function FixedUpdate() {
//固定間隔的更新
}
Chapter-7 并發
UnityScript中使用Coroutine來進行并發。并不是所有操作都要在一幀之內全部完成,可能你想讓某段代碼在一定之間內持續運行且不影響畫面幀的刷新,那么這時候就要用到Coroutine了。
讓某段代碼以Coroutine的方式運行的方式就是在這段代碼的合適位置加上關鍵字yield,這個合適的位置由你自己決定,如果你設置了yield關鍵字,那么這段代碼會在yield關鍵字處終止運行,并在合適的時候再返回到這個yield關鍵字所在處繼續運行。下面的代碼展示了如何定義Coroutine:
public function CoroutineTest() {
while (true) {
yield; //加上yield關鍵字就可以讓函數以Coroutine的方式執行
}
}
如果要運行某個Coroutine代碼段,直接像調用普通函數一樣調用它就行了:
function Start() {
CoroutineTest(); //自動以Coroutine方式運行并且不會阻塞畫面幀的更新哦
}
Chapter-8 網絡編程
UnityScript并沒有自己的socket,但是因為UnityScipt以mono運行時運行,所以可以使用mono的socket。下面定義一個socket拋磚引玉一下你就明白了~
public var sock :System.Net.Sockets.Socket;
如果轉載請注明出處:http://blog.csdn.net/gophers
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈