解決方法
打開游戲進(jìn)入失效腳本所在頁面后搜索Log,如果有
Could not produce class with ID XXX
類似字樣赊舶,則適用于本問題-
解決方法有3種:
- 點(diǎn)掉Player Settings->Other Settings->Strip Engine Code的對(duì)勾再重新打包(不推薦)
- 在Scene中找個(gè)沒影響的地方加入這個(gè)腳本(加入腳本就行议泵,不用其他配置)再打包(不推薦)
- 在http://docs.unity3d.com/Manual/ClassIDReference.html里找到ID 所對(duì)應(yīng)的類名,然后在Assets里加入一個(gè)Link.xml再打包(推薦)
Link.xml內(nèi)容如下(以 ID 331為例):
<linker> <assembly fullname="UnityEngine"> <type fullname="UnityEngine.SpriteMask" preserve="all"/> </assembly> </linker>
原因
這是由于你在Player Settings->Other Settings->Strip Engine Code里打鉤了伤锚。這個(gè)選項(xiàng)顧名思義琼梆,是允許Unity在打包時(shí)候剝離一部分的代碼以節(jié)省空間捶码。你的腳本沒有生效是因?yàn)樗谶@個(gè)時(shí)候給剝離掉了。
那么如何讓系統(tǒng)不剝離呢豁鲤?第一個(gè)方法是不用AB包加載秽誊,直接在Scene里面放一個(gè)被剝離腳本,這樣在編譯時(shí)系統(tǒng)就會(huì)檢測(cè)到你用了這個(gè)腳本琳骡,便自動(dòng)添加成例外锅论,不再剝離。在iOS工程中楣号,這一點(diǎn)反映在TypesInScenes.xml文件里最易。
不過更正規(guī)的方法是用Link.xml,讓添加Strip的例外腳本炫狱,簡(jiǎn)單又干凈藻懒。在iOS工程中Strip例外的腳本都會(huì)存在EditorToUnityLinkerData.json里。
其他
如果采用了以上方法后發(fā)現(xiàn)Xcode工程啟動(dòng)即閃退视译,那么刪除工程中Classes->Natice文件夾下的文件和Data文件夾下的文件嬉荆,重新打包即可。