冒險日誌 - 生活隨筆

2018.04.27(五) – 讓物件消失的幾種方法

在遊戲專案裡,有很多時機都需要做到「讓物件消失」這件事,而達到這件事的方法也很多,每一個的實作細節及效果都不太一樣。


一般來說,常見的方法有以下幾種

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)

Leave a comment