Unity 打包真机脚本丢失的问题


Bug详情

项目中导入了UI ParticlePackage,用于处理特效层级
unity 运行效果正常,打包真机后运行时发现特效并没有正确显示,真机Log如下图

需要接入查看真机Log工具的点这里

查看图中Log发现对应的Prefab上挂载的脚本都丢失了

package 包老老实实呆着毛都不缺

分析

已知:
1.真机对应的Prefab上挂载的脚本都丢失了。
2.Unity运行正常
3.打包资源是使用的AssetBundle。
这里可以排查下是不是代码裁剪(Strip Engine Code)把相关的代码剪掉了。就是下图这个

关于代码裁剪和解决方案参考点这个链接

代码裁剪会排除Resources和Scene下用到的脚本,但是对AB包不能正确排除

解决方案

解决方案1:在Scene或Resources下加个对应代码的引用(不优雅,但是快速验证是不是当前问题的时候可以用)
解决方案2:在项目任意位置添加link.xml文件,填入对应的程序集

<linker>
       <assembly fullname="Coffee.UIParticle" preserve="all"/>
</linker>

需要排除的文件除了程序集,还可以选择排除命名空间或具体的类,使用配置如下案例

<linker>
   <!--整个程序集-->
   <assembly fullname="Unity.Mono" preserve="all"/>
   <assembly fullname="UnityEngine" preserve="all"/>
   <!--指定程序集中的指定命名空间-->
   <assembly fullname="JsonDotNet">
       <namespace fullname="Newtonsoft.Json" preserve="all"/>
   </assembly>
   <!--指定程序集某个类-->
   <assembly fullname="mscorlib">
       <type fullname="System.Diagnostics" preserve="all"/>
   </assembly>
</linker>

附录

关键文件丢失可能导致程序闪退,看不到Log怎么办?
方案1:Logcat
方案2:fireBase

附录1:Unity脚本ID

https://docs.unity3d.com/Manual/ClassIDReference.html

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity中进行安卓真机调试的步骤如下: 1. 首先,确保你已经安装了Unity和Android SDK,并且已经将Android设备连接到电脑上。 2. 打开Unity项目,并在菜单栏中选择“Edit”(编辑)>“Preferences”(首选项)>“External Tools”(外部工具)。 3. 在“External Tools”(外部工具)面板中,找到“Android”部分,并确保已经正确设置了Android SDK的路径。 4. 在Unity中,选择“File”(文件)>“Build Settings”(构建设置)。 5. 在“Build Settings”(构建设置)面板中,选择“Android”作为目标平台,并点击“Switch Platform”(切换平台)按钮。 6. 点击“Player Settings”(播放器设置)按钮,打开“Player Settings”(播放器设置)面板。 7. 在“Player Settings”(播放器设置)面板中,展开“Other Settings”(其他设置)部分,并找到“Scripting Backend”(脚本后端)选项。 8. 将“Scripting Backend”(脚本后端)选项设置为“Mono”(单线程)。 9. 点击“Build and Run”(构建和运行)按钮,将Unity项目构建为安卓应用程序。 10. 将生成的安卓应用程序文件(.apk)传输到Android设备上。 11. 在Android设备上,打开“设置”应用程序,并找到“开发者选项”。 12. 在“开发者选项”中,启用“USB调试”选项。 13. 将Android设备连接到电脑上,并确保已经安装了正确的设备驱动程序。 14. 在Unity中,点击“Play”(播放)按钮,开始在安卓设备上进行调试。 请注意,以上步骤仅适用于使用MonoDevelop作为脚本编辑器的情况。如果你使用其他脚本编辑器,例如Visual Studio,你需要按照相应的文档进行设置和调试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值