1. 程式人生 > >unity打包釋出apk或ios時,tag值錯亂導致觸發器部分失效的問題

unity打包釋出apk或ios時,tag值錯亂導致觸發器部分失效的問題

    最近做老專案升級,升級到unity5.6時遇到了一個很頭痛的問題,就是在unity中執行一切正常。沒有任何問題。但是匯出釋出ios或android時就會出現一些觸發事件沒反應。導致一些道具或功能失效。

    剛開始我以為是匯出設定的問題。後來發現不是設定的問題。做了一些觸發檢測的demo匯出執行時正常的(觸發的條件查詢的是物體的名字不是tag值)。

    經過一系列的列印輸出。發現了問題所在。是tag值變了。在unity中執行tag值的索引是正確的(untiy4.6的時候沒有這個問題,unity5.0以後tag的管理對於一些空字元佔位的tag值在專案再次載入的時候會移除掉)。如圖:


(紅框中顯示空的tag會在下次專案載入的時候移除掉)

再使用assetbundle打包的時候會儲存下tag資訊。但是這個tag資訊儲存的是tag列表資訊,而不是tag的字串名字。如果你的tag列表中有空位,那麼打包儲存的tag資訊會把空出來的那個位置removed。把後面的tag往前移。這樣就導致後面的tag索引變了。執行的時候加載出來的物體的tag就會發生變化。不是你想要的tag。那麼你通過tag值來判斷的觸發條件將會失效。

    所以請注意我下面說的這句話:

    我們在新增tag值的時候一定要按順序。中間不能留有空tag值!!!