背景 :
我们的特效会发射一些模型做一些动作,比如旋转模型之类,这个时候就需要在ParticleSystem 中引用Mesh在编辑器中没有任何问题,在手机上会出现模型丢失的情况,同一个特效下其他粒子会完整播放,但就是模型丢失了. 具体报错信息如下
ADB报错信息
**No Mesh data avaliable for mesh xxoo on partilce sytsem Parcitcle System.Make Sure Read/Write Enabled is set in the Importer to work on the particle system renderer.**
解决办法
设置模型的Importer 处为 Read/Write; 这样就会导致你的模型在内存中多占了一份内存。
问题虽然粗暴的解决了,但是后来特效又告诉我说其实有些特效也是按照这种方式发射了模型的,但是却没有丢失。经过查证和验证终于在官方找到了合理的解释
解释与验证
Meshes must be read/write enabled to work on the Particle System.
If you assign them in the Editor, Unity handles this for you.
But if you want to assign different meshes at run time, you need to check the Read/Write Enabled setting in the Import Settings.
大致意思就是说:如果你在运行的时候去重新指派Mesh 将会要求你设置Mesh 的Read/Write 。 编辑器里面将会帮你自动处理这个操作
这里我简单的修改下我的Mesh 测试代码如下,果然在手机上新加入的Mesh无法在显示了
public class ChangeMesh : MonoBehaviour {
public ParticleSystemRenderer ps;
private void OnGUI()
{
if(GUI.Button(new Rect(0, 0, 200, 200), "change mesh"))
{
ps.mesh = Resources.Load<Mesh>("readwritemesh");
}
}
}