背景 :
我们的特效会发射一些模型做一些动作,比如旋转模型之类,这个时候就需要在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");
}
}
}
博客围绕特效模型在手机上丢失问题展开。特效发射模型时,编辑器正常,手机上模型丢失,出现ADB报错。解决办法是设置模型Importer处为Read/Write,但部分特效按此操作未丢失。官方解释运行时重新指派Mesh需设置Read/Write,编辑器会自动处理,测试代码验证了该情况。
848

被折叠的 条评论
为什么被折叠?



