0

无法访问已处置的对象。对象名称:“基本效果”。

每当我尝试从列表中加载模型时,都会引发此异常。该方法曾经有效,但最近失败了,我不知道为什么。

下面是我的渲染代码:

public void RenderModel(Model m, Vector3 ModelPosition,  float rotY = 0, float rotX = 0, float rotZ = 0, bool lit = true, bool collision = false)  
{  
    if (m != null)  
    {  
        Matrix[] transforms = new Matrix[m.Bones.Count];    
        m.CopyAbsoluteBoneTransformsTo(transforms);  

        float rotationZ = rotZ * (float)(Math.PI / 180);
        float rotationY = rotY * (float)(Math.PI / 180);
        float rotationX = rotX * (float)(Math.PI / 180);

        foreach (ModelMesh mesh in m.Meshes)
        {
            foreach (BasicEffect effect in mesh.Effects)
            {
                if (lit == true)
                {
                    //effect.EnableDefaultLighting();
                }
                effect.World = transforms[mesh.ParentBone.Index] *
                    Matrix.CreateRotationY(rotationY) *
                    Matrix.CreateRotationX(rotationX) *
                    Matrix.CreateRotationZ(rotationZ) *
                 Matrix.CreateTranslation(ModelPosition);
                effect.View = view;
                effect.Projection = proj;
            }
            mesh.Draw();
        }
    }
}

然后是我的列表代码(路径是模型的路径)

public void AddModel(string Path)  
{  
    Model newModel;  
    newModel = Content.Load<Model>(Path);  
    renderModels.Add(newModel);  
}

最后是 Draw 代码,放入 draw 方法。

foreach (Model m in renderModels)  
{  
    camera.RenderModel(m, new Vector3(0,0,0));  
}  

澄清一下,我需要这个用于我的小团队一直在开发的游戏的关卡编辑器。任何帮助深表感谢。

4

0 回答 0