花了點時間,爬了點別人Unity的Coding
發現了我一直對 GameObject 這個最基本的原件,原來是如此的不熟悉!
GameObject
身為Unity最重要原始的元素
GameObject 可以在程式中 new GameObject() 直接創造
一旦GameObject 被創建出來,他就立即納入了Unity的管控當中,不管你願不願意
而場景上似乎是不能從Create列表中找到 GameObject
只能找到一堆 Cube~Sphere~ 之類的內建物
但是可以通過隨便創建一個東西,然後把旁邊的 Component 元件 ( 除了Transform以外 )
全部從小齒輪中選擇 Remove Component 移除掉,你就能得到一個空蕩蕩的GameObject了
別問我乾麻這麼無聊!
我絕對不是因為覺得抓著一個空蕩蕩的東西晃來晃去很好玩才這樣幹的!
使用編輯器比使用程式所拿到的GameObject 在管理上總是比較簡單明瞭
使用程式 new 出來的 GameObject,因為自動納入Unity管理,可能多少有風險
我猜測,假如在一個 Function 內有一行「GameObject obj = new GameObject();」
而只是把它當暫存的用途,而忘記離開後要銷毀他,或者疏於管理
那他就會一直存在於Unity的管理內,在Function不停的Call,就不停的累積~累積~直到爆掉
當然,這只是我學到現在的猜測部分就是了,說不定Unity有防範措施(?
不過如果量大且數量動態變化的話當然還是用 new 的比較方便啦
DontDestroyOnload( GameObject )
這是和 GameObject 有很重要關係的 Function ,他隸屬於 Object 這個元老Class
他的作用很簡單,就是防止在切換 Scene (場景) 的時候該GameObject被清除。
因為如果使用到切換場景的功能,目前場上的所有物件都會被銷毀
而這個Function 則可以防止登錄的GameObject 被銷毀,而且保留原有的參數
____________
躺在床上轉來轉去還是決定打個學習紀錄
免得又忘記