unity打包发布apk或ios时,tag值错乱导致触发器部分失效的问题

    最近做老项目升级,升级到unity5.6时遇到了一个很头痛的问题,就是在unity中运行一切正常。没有任何问题。但是导出发布ios或android时就会出现一些触发事件没反应。导致一些道具或功能失效。

    刚开始我以为是导出设置的问题。后来发现不是设置的问题。做了一些触发检测的demo导出运行时正常的(触发的条件查找的是物体的名字不是tag值)。

    经过一系列的打印输出。发现了问题所在。是tag值变了。在unity中运行tag值的索引是正确的(untiy4.6的时候没有这个问题,unity5.0以后tag的管理对于一些空字符占位的tag值在项目再次加载的时候会移除掉)。如图:

unity打包发布apk或ios时,tag值错乱导致触发器部分失效的问题_第1张图片

(红框中显示空的tag会在下次项目加载的时候移除掉)

再使用assetbundle打包的时候会保存下tag信息。但是这个tag信息保存的是tag列表信息,而不是tag的字符串名字。如果你的tag列表中有空位,那么打包保存的tag信息会把空出来的那个位置removed。把后面的tag往前移。这样就导致后面的tag索引变了。运行的时候加载出来的物体的tag就会发生变化。不是你想要的tag。那么你通过tag值来判断的触发条件将会失效。

    所以请注意我下面说的这句话:

    我们在添加tag值的时候一定要按顺序。中间不能留有空tag值!!!


你可能感兴趣的:(unity)