Prefab
一個可重複建立的物件,可以事先將內容都制訂好,當需要的時機在clone出來使用
1.程式只能抓放在Resources資料夾中的內容(沒有就自行建立)
(建立出來的座標和旋轉角度皆為0)
2.要是到時候要指定Prefab物件的名稱,記的後面要加上(Clone)
具現化(Instantiate)Prefab
//1.物件名稱 2.建立時的座標(x,y,z) 3.建立時的角度(Quaternion.identity代表同一性)
摧毀(Destroy)Prefab
GameObject go=
(GameObject)Instantiate();
Destroy(go);
Destroy(go);
Destroy(go,1.5f); //1.5秒後銷毀
具現化後給予指定某些變數值
GameObject obj = (GameObject)Instantiate(Resources.Load("HeroPrefab"),
new
Vector3(transform.position.x , transform.position.y - 2f,
transform.position.z), Quaternion.Euler(0,
0, 180));
//指定此物件中HeroShoot腳本的setDir方法
obj.GetComponent<HeroShoot>().setDir(DIR.DOWN);
具現化後指定父層級(例如ui放在canvas之下)
giftPrefab
= (GameObject)Instantiate(Resources.Load("UISystem/Gift/GiftUI"), Vector3.zero,
Quaternion.identity);
//指定父層級是誰
giftPrefab.transform.SetParent (GameObject.FindObjectOfType<Canvas>().transform);
//避免物件大小出問題,固定設成1
giftPrefab.transform.localScale
= Vector3.one;
呼叫Prefab中Script的方法
//呼叫GiftTabPrefab這個Script的setGiftTabSource方法
giftTabPrefab[i].GetComponent<GiftTabPrefab>().setGiftTabSource(giftTabSource[i]);
想從Prefab物件中控制Scenes上的非Prefab物件
在生成Prefab的Script中就將GameObject指定進去,來讓各個動態生成的Prefab各自使用
//建立一個物件,掛上自己這個Script,並且指定物件
GameObject
o = new GameObject();
Recycler
recycler = o.AddComponent<Recycler>();
recycler.prefab = prefab;
recycler.startSize = startSize;
recycler.targetSize = targetSize;
在自己的物件上加入Script
gameObject.AddComponent<PlayerJoystick>();
當Prefab放上Scenes修改後想儲存
按控制欄右上角的Apply就可以直接儲存
沒有留言:
張貼留言