Здравствуйте, SPP, Вы писали:
SPP> public struct MeshInfo SPP> { SPP> private Mesh mesh; SPP> private Material[] meshMaterials; SPP> private Texture[] meshTextures; SPP> public Mesh Model { get { return mesh; } set { mesh = value; } } SPP> public Material[] Materials { get { return meshMaterials; } set { meshMaterials = value; } } SPP> public Texture[] Textures { get { return meshTextures; } set { meshTextures = value; } } SPP> }
SPP> public class MainClass : System.Windows.Forms.Form SPP> { SPP> public MeshInfo[] meshes = new MeshInfo[_meshesCount]; SPP> public int meshIndex = 0; SPP>/* ... */ SPP> private void AddPredmet() SPP> {
SPP> ExtendedMaterial[] mtrl = null;
SPP> // Загрузка меша SPP>/* на этой строчке выдает Exception */ SPP> meshes[meshIndex].Model = Mesh.FromFile(path, MeshFlags.Managed, device, out mtrl);
SPP> // Сохраняем материалы, если они есть SPP> if ((mtrl != null) && (mtrl.Length > 0)) SPP> { SPP> meshes[meshIndex].Materials = new Material[mtrl.Length]; SPP> meshes[meshIndex].Textures = new Texture[mtrl.Length];
SPP> // Сохраняем текстуры, если есть SPP> for (int i = 0; i < mtrl.Length; i++) SPP> { SPP> meshes[meshIndex].Materials[i] = mtrl[i].Material3D; SPP> if ((mtrl[i].TextureFilename != null) && (mtrl[i].TextureFilename != string.Empty)) SPP> { SPP> meshes[meshIndex].Textures[i] = TextureLoader.FromFile(device, @"..\..\" + mtrl[i].TextureFilename); SPP> } SPP> } SPP> } SPP> } SPP>}
SPP>При выхове функции AddPredmet() выдается exception:
SPP>An unhandled exception of type 'System.NullReferenceException' occurred in Project.exe SPP>Additional information: Object reference not set to an instance of an object.
SPP>Как я понимаю, это потому, что не инициализирована переменная meshes. Только как это сделать? Или может в чем другом дело?
Массив создать надо сначала.
Размер ты должен знать.