用unity做了一個3D俄羅斯方塊的游戲,七個方塊都是Prefab,每個俄羅斯方塊又由四個cube組成,他們都系結了同一個腳本,該腳本實作方塊的下落和合法性檢測等功能。但運行時第一個方塊降落后,第二個方塊及往后都不能正常降落。嘗試列印資訊后發現,在合法性檢測那里遍歷transform的所有child的時候,第一個方塊的child也會被包含進去;在嘗試對第一個方塊進行銷毀(從場景中消失)后,之后的方塊能正常下落,但這樣就不是俄羅斯方塊游戲了,有沒有什么辦法在不讓前邊的方塊在場景中消失的情況下解決問題。
uj5u.com熱心網友回復:
上代碼瞅瞅。uj5u.com熱心網友回復:
是不是遍歷寫成遍歷全場景了,應該要從預制體的根部開始遍歷,每一個方塊一份預制體其實更好的方法是吧里頭的子節點直接放到一個陣列結構,直接存預制體上
這樣就不用每次還要去遍歷什么子節點
uj5u.com熱心網友回復:
預制體是一個一個生成并控制該預制體,落到下面后,這個控制腳本就沒用了
直接洗掉就行,
uj5u.com熱心網友回復:
多個物體系結同一腳本,這些腳本運行后是不同的物件.所以你只需要在腳本中寫一個欄位ID,克隆物體時,分別為這個ID賦不同的值,然后你自已根據ID來區別是哪個,這樣避免了同步操作(可以做到只操作一個,其它同腳本不受控制)
這是一個思路,能看明白么?
uj5u.com熱心網友回復:
Prefab一旦創建就是相對獨立的了。可以分開看待uj5u.com熱心網友回復:
使用一個2維陣列,來描述當前空間內的cube分布。如果為null,就是空著的,如果不為null,則指向一個方塊物體。寫一個Cube腳本,加掛到cube上做成預制體。腳本中有向左/右/下的檢測,主要是檢測2維陣列中旁邊是否放置了其他物體。
寫一個Group腳本,用來描述各種形狀,形狀由Cube預制體構成。用矩陣或者2維陣列來描述形狀。腳本具有group的旋轉功能。
這種思路很容易做出碰撞檢測/銷毀檢測。。
uj5u.com熱心網友回復:
用個this就搞定uj5u.com熱心網友回復:
用個this就搞定uj5u.com熱心網友回復:
用個this就搞定轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/50509.html
標籤:Unity3D
上一篇:菜鳥求助
