在遊戲專案裡,有很多時機都需要做到「讓物件消失」這件事,而達到這件事的方法也很多,每一個的實作細節及效果都不太一樣。
一般來說,常見的方法有以下幾種
1.this.gameObject.setActive(false)
2.this.gameObject.GetComponent<SpriteRenderer>().enabled = false
3.Destroy(this.gameObject)
看這三行code的長相差這麼多,就知道他們的用途一定有差XD底下來大略分析一下
this.gameObject.setActive(false)
讓這個Object直接變成inactive狀態(相當於在Inspector裡把顯示物件的勾勾取消掉)
優點:最直觀,這個物件身上的Collider、RigidBody、Script等Component也不會再產生作用
缺點:變成inactive後,這個物件身上的Scirpt就呼叫不到了,在有些情況下不太方便。
this.gameObject.GetComponent<SpriteRenderer>().enabled = false
單純把SpriteRenderer關掉,比較像是「讓物件隱形」
優點:在讓畫面符合自身需求的同時(在進入GameOver結算畫面的時候把所有怪物藏起來,避免影響畫面),也可以繼續使用這個物件身上的各種Component。
缺點:要小心這個物件殘留的剛體、Collider等性質,它只是外型上消失了,還是會默默對其他物件、對整個系統產生影響。
Destroy(this.gameObject)
優點:直接把這個物件刪除,保證沒有任何後患(?)
缺點:刪掉就回不來了(廢話XD)