Transform 組件
組件:Component饲梭,游戲物體的組成零件煌张。
Unity3D 就是一款“組件式”游戲開發(fā)引擎苛白,使用各種各樣的組件拼裝出我們 游戲物體娃豹,最終拼接出一款完整的游戲。
Unity3D 這款引擎提供了很多種類的組件购裙,組成我們游戲世界最基本的元素懂版。
Transform: 變換。 所有 的游戲物體都具備的一個組件躏率,也是最最基礎(chǔ)的一個 組件躯畴,用于存儲游戲物體的基本信息民鼓。
屬性:
Position:位置;
Rotation:旋轉(zhuǎn);
Scale:縮放;
腳本
Start()方法:當游戲運行起來,就會馬上執(zhí)行私股,且只執(zhí)行一次摹察。
Update()方法:循環(huán)調(diào)用,每幀調(diào)用一次倡鲸。一秒鐘大概執(zhí)行 60 次。 幀:我們的游戲畫面是在不停的刷新的黄娘,沒刷新一次峭状,就是一幀。
輸出調(diào)試:Debug.Log ();
Start()和 Update()方法都是 Unity3D 內(nèi)部的“事件方法”逼争,不需要我
們?nèi)斯ふ{(diào)用优床,系統(tǒng)會自動調(diào)用和管理這些“事件方法”。
如何使用腳本?
1.直接將腳本拖拽到 Hierarchy 面板上物體身上; 2.直接將腳本游戲物體的 Inspector 面板上; 運行游戲誓焦,腳本就會執(zhí)行胆敞。
Console 面板
Console:控制臺。用于輸出顯示游戲運行過程中的調(diào)試信息杂伟。 功能按鈕:
Clear:清除功能移层,清除控制臺中的信息; Collapase:折疊功能,將相同的內(nèi)容合并到一條顯示赫粥,更新后面的數(shù)字; Clear on Play:運行時清除之前的內(nèi)容;
如何使用 Transform 組件(變換組件)移動物體观话?
相關(guān)方法:
1 、gameObject.GetComponent<T>():獲取相應(yīng)組件的引用越平。 查找當前游戲物體身上的某個組件频蛔,然后保存它的引用。
2秦叛、Transform.Translate(Vector3, Space):移動物體的位置晦溪。
游戲物體往某個方向移動;以自身坐標系或世界坐標系。
相關(guān)參數(shù)
Vector3[struct]:三維向量挣跋。 向量三圆,可以表示一個方向,也可以表示一個位置浆劲。
Space[enum]:空間嫌术。 Space.Self:表示物體自身的坐標系。 Space.World:表示物體所在的世界坐標系牌借。
注意:腳本是游戲物體的一部分度气,一般控制誰的腳本就掛載在誰的身上。
例子:
private Transform m_Transform;
//1次. init .
void Start () {
m_Transform = gameObject.GetComponent<Transform> ();
}
void Update () {
if (Input.GetKey (KeyCode.A)) {
m_Transform.Translate (Vector3.left * 0.1f, Space.World);
}
}
2膨报、如何顯示和隱藏 某個主件磷籍?
a. 使用使用腳本掛載到主件上适荣,實現(xiàn)想要的功能。
b. 前提要新建一個空物體院领,聲明一個公共變量弛矛。
實現(xiàn)代碼:
public class Test : MonoBehaviour {
// 聲明一個公共的 變量
public MeshRenderer m_MeshRenderer;
void Start () {
}
void Update () {
// 隱藏和顯示 “網(wǎng)格組件”
if (Input.GetKeyDown(KeyCode.Space))
{
m_MeshRenderer.enabled = !m_MeshRenderer.enabled;
}
}
}
或者: 使用 物體本身的做法。使用:gameObject
public class Test : MonoBehaviour {
void Start () {
}
void Update () {
// 隱藏和顯示 “網(wǎng)格組件”
if (Input.GetKeyDown(KeyCode.Space))
{
// gameObject:指 指該物體本身
gameObject.GetComponent<MeshRenderer> ().enabled = !gameObject.GetComponent<MeshRenderer> ().enabled;
}
}
}
總結(jié):
必須學會會使用組件的獲取比然、查詢丈氓、刪除、遍歷强法?
void Start () {
// 添加
gameObject.AddComponent<ParticleSystem> ();
// 查詢
ParticleSystem ps = gameObject.GetComponent<ParticleSystem> ();
// ParticleSystem ps1 = gameObject.GetComponentInChildren<ParticleSystem> ();
// ParticleSystem[] ps2 = gameObject.GetComponentsInChildren<ParticleSystem> ();
// ParticleSystem[] ps_parents = gameObject.GetComponentsInParent<ParticleSystem> ();
// 刪除
Destroy(ps);
}