2011年9月22日 星期四

UNITY3D - Javascript繼承

善用繼承可以讓遊戲有更多的變化且減少無意義的COPY&PASTE(?)

U3D的JS繼承用法如下

class Parent {
function Start () {
print("parent's Start");
A();
}

function A () {
print("parent's A");
B();
}

function B () {
print("parent's B");
C();
}


function C () {
print("parent's C");
}

}


class Children extends Parent {

function A () {
print("Children's A");
B();
}


function C () {
super.C();
print("Children's C");
}
}

如果在GameObject上附加Children時會發現此GameObject的執行結果為
parent's Start
Children's A
parent's B
parent's C
Children's C

在寫怪物AI時用繼承的方式會輕鬆很多,底層先寫好每隻怪都會做的動作(移動、攻擊等等),繼承後就可以按不同需求附加個別處理如(特殊攻擊)。

2011年9月15日 星期四

UNITY3D - 圖層觀念

U3D裡面有2D物件也有3D物件,因此要注意物件之間是否會造成顯示異常。

2D世界其實跟3D世界不屬於同一個世界...
可以把2D世界當成是貼在鏡頭前,所以2D物件一定會在介面上擋到3D物件。
而2D世界中的圖片會依據transform.position.z來當作圖層設定,z軸越大表示圖越上面。

例:
A圖片z軸為0
B圖片z軸為1
C圖片z軸為2

呈現出來就會變成
┌───────┐
│        ┌───────┐
│ A    │  ┌───────┐
│        │ B    │        │
└───│  │ C      │
           └───│                   │
                      └───────┘

要注意的是在OnGUI底下畫出來的東西圖層是最高的,所以2D物件也會被OnGUI的東西蓋到喔。