particle unvisible on bulid while visible on Game view

本文探讨了Unity中粒子系统在GameView与Build后显示差异的问题,通过对比新旧粒子prefab,发现shader与simulationspace设置的影响。最终确定问题源于粒子系统依赖的外部资源在AssetBundle中read/writeenable设置不当。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      上周四发现,在unity的Game view 里面和build之后的游戏节目显示效果表现不一样,在unity 的Game view 里面粒子效果显示正常,但是build完之后粒子不显示了。

      开始怀疑是shader的原因,于是用 renderdoc(FamgDebug 也可以)查看,发现压根就没渲染于是排除shader渲染方面的原因。于是查看代码,查了半天发现也没问题.(这里范了个错误,如果代码有问题在代码层面Game view 里面也应该会有问题),于是把粒子还原为原来对应的assetbundle ,发现竟然显示出来看了。于是还原老的粒子prefab与新的prefab进行比较发现两处不同。

1.发现两个refab引用的材质shader不同

2.粒子的simulation space 不一样

       于是既查看shader,又修改粒子的simulation space。折腾了一天发现没解决。后来google发现有人说是unity bug ,粒子如果出生的时候不是在摄像机的可视范围内就会被裁剪掉,因此有人说把粒子生成位置放在摄像机前面,距离大概为5实验不行。于是各种修改测试也没解决问题。于是就想到问题出在材质上面了,就是就各种查看,终于在https://issuetracker.unity3d.com/issues/asset-bundle-particle-system-using-a-mesh-in-another-bundle-is-not-visible 上面算是眼前一亮发现还真是的 粒子系统bundle 依赖了一个外部的模型资源,该模型资源的read/write enable 处于未选中状态。于是就有了两种推断:

1.当粒子系统引用外部资源的时候,外部资源的fbx模型的read/write 要设置为enabled

2 如果例子引用的所有资源打包进同一个bundle中的时候,如果这些引用中有模型的话,不管这个模型的read/write 是否enabled都可以。

持着怀疑的态度,先把该粒子的所有资源打成一个bundle资源,重新进游戏发现粒子显示出来了.推论2 已经得到证明

后来又把粒子和它因引用的资源分开打,发现必须把粒子依赖的外部资源的read/write 设置为enabled才可以 推断1 也得到了证明

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值