오류 : 폐기 된 개체에 액세스 할 수 없습니다. 개체 이름 : 'Texture2D'C# XNA 폐기 된 개체에 액세스 할 수 없습니다. 개체 이름 : 'Texture2D'. 하지만 처분하지 않습니다.
왜 이런 일이 발생합니까? 내 코드 전체에서 아무 것도 처분하도록 지시하지 않습니다! 이것은 내 XNA C# 게임의 LoadContent()에서 발생합니다. 코드이 오류가 발생하면 Texture2D가 강조 표시된 부분이 발생합니다.
protected override void LoadContent()
{
SoundEffect.DistanceScale = 20;
SetUpPlain();
SetUpWalls();
// Walls
wallsEffect = new BasicEffect(graphics.GraphicsDevice);
wallsEffect.World = Matrix.Identity;
wallsEffect.Projection = vars.projection;
wallsEffect.TextureEnabled = true;
wallsEffect.Texture = Content.Load<**Texture2D**>("Textures\\Fence");
// Set-up Player Options
Player1.PlayerModel = Content.Load<Model>("PlayerA");
Player1.BoundingSphere = new BoundingSphere(new Vector3(Player1.Position.X, Player1.Position.Y - 2, Player1.Position.Z), Player1.PlayerModel.Meshes[0].BoundingSphere.Radius * 0.04f);
Player2.PlayerModel = Content.Load<Model>("PlayerA");
Player2.BoundingSphere = new BoundingSphere(new Vector3(Player2.Position.X, Player2.Position.Y - 2, Player2.Position.Z), Player2.PlayerModel.Meshes[0].BoundingSphere.Radius * 0.04f);
//
loadStaticModel(Content, "Radio", null, 11, 4, -2, 0, 180, 0, CollisionType.Default, LightingType.AmbientDirectional, true, false);
loadStaticModel(Content, "AmmoCrate", null, 10, 1, 0, 0, 0, 0, CollisionType.Default, LightingType.AmbientDirectional, true, false);
loadStaticModel(Content, "AmmoCrate", null, 12, 1, 0, 0, 0, 0, CollisionType.Default, LightingType.AmbientDirectional, true, false);
loadStaticModel(Content, "AmmoCrate", null, 11, 3, 0, 0, 0, 0, CollisionType.Default, LightingType.AmbientDirectional, true, false);
loadStaticModel(Content, "Forklift", null, 15, 0, -5, 0, 0, 0, CollisionType.Default, LightingType.AmbientDirectional, true, false);
loadStaticModel(Content, "PepsiMachine", null, 25, 0, -5, 0, 0, 0, CollisionType.Default, LightingType.AmbientDirectional, true, false);
loadStaticModel(Content, "Chest", null, 10, 0, -20, 0, 0, 0, CollisionType.Default, LightingType.AmbientDirectional, true, false);
loadStaticModel(Content, "PalletBoard", "Cork", 10, 0, -20, 0, 0, 0, CollisionType.Default, LightingType.AmbientDirectional, true, false);
loadStaticModel(Content, "Table", "Cork", 15, 0, -20, 0, 0, 0, CollisionType.Default, LightingType.AmbientDirectional, true, false);
loadStaticModel(Content, "Cylinder", "Cork", 15, 0, -40, 0, 0, 0, CollisionType.Default, LightingType.AmbientDirectional, true, false);
loadStaticModel(Content, "Wall", "Cork", 184, 0, -196, 0, 0, 0, CollisionType.Default, LightingType.AmbientDirectional, true, false);
loadStaticModel(Content, "WallTop", "Cork", 184, 0, -188, 0, 0, 0, CollisionType.Default, LightingType.AmbientDirectional, true, false);
loadStaticModel(Content, "Wall", "Cork", 184, 0, -180, 0, 0, 0, CollisionType.Default, LightingType.AmbientDirectional, true, false);
loadStaticModel(Content, "Door1", "MetalA", 184, 0, -188, 0, 0, 0, CollisionType.Default, LightingType.AmbientDirectional, true, false);
loadStaticModel(Content, "Door1", "MetalA", 184, 0, -184, 0, 0, 0, CollisionType.Default, LightingType.AmbientDirectional, true, false);
loadStaticModel(Content, "Wall", "Cork", 188, 0, -176.15f, 0, 90, 0, CollisionType.Default, LightingType.AmbientDirectional, true, false);
loadStaticModel(Content, "Wall", "Cork", 196, 0, -176.15f, 0, 90, 0, CollisionType.Default, LightingType.AmbientDirectional, true, false);
for (int i = 1; i <= MapSize/8; i++)
{
loadStaticModel(Content, "Fence", "Fence", i * 8.12f - 4, 0, 0, 0, 270, 0, CollisionType.None, LightingType.AmbientDirectional, false, false);
loadStaticModel(Content, "Fence", "Fence", 0, 0, -(i * 8.12f - 4), 0, 180, 0, CollisionType.None, LightingType.AmbientDirectional, false, false);
loadStaticModel(Content, "Fence", "Fence", MapSize, 0, -(i * 8.12f - 4), 0, 0, 0, CollisionType.None, LightingType.AmbientDirectional, false, false);
loadStaticModel(Content, "Fence", "Fence", i * 8.12f - 4, 0, -MapSize, 0, 90, 0, CollisionType.None, LightingType.AmbientDirectional, false, false);
}
// Sound
vars.soundEffect[0] = Content.Load<SoundEffect>("Sounds\\NormalStep");
vars.soundEffect[1] = Content.Load<SoundEffect>("Sounds\\Enter Sandman");
vars.soundEffect[2] = Content.Load<SoundEffect>("Sounds\\PlayerJoinGame");
vars.soundEffect[3] = Content.Load<SoundEffect>("Sounds\\JumpLand");
vars.soundEffectInstance[0] = vars.soundEffect[1].CreateInstance();
soundEffectPosition[0] = new Vector3(0, 200, 200);
soundEffectEmitter[0] = new AudioEmitter();
soundEffectEmitter[0].Position = soundEffectPosition[1];
soundEffectListener[0] = new AudioListener();
soundEffectListener[0].Position = Player1.Position;
vars.soundEffectInstance[0].Apply3D(soundEffectListener[0], soundEffectEmitter[0]);
vars.isSoundPlaying[0] = false;
// Menu's
vars.menuBackground = Content.Load<Texture2D>("Textures\\menuBackground");
PauseMenu.screenShotHighlight = Content.Load<Texture2D>("Textures\\ScreenShotViewerHighlight");
vars.MenuFont = Content.Load<SpriteFont>("Fonts//MenuFont");
// Death HUD
deathBackground = Content.Load<Texture2D>("Textures\\deathBackground");
//
chatBackground = Content.Load<Texture2D>("Textures\\chatBackground");
plainTexture = Content.Load<Texture2D>("Textures\\Grass");
// Tank
tank = Content.Load<Model>("tank");
tankTransforms = new Matrix[tank.Bones.Count];
// Sky Dome
skyDome = Content.Load<Model>("SkyDome");
skyDomeTexture = Content.Load<Texture2D>("Textures\\skyBox");
skyDomeTransforms = new Matrix[skyDome.Bones.Count];
//
font = Content.Load<SpriteFont>("Fonts//PCFont1");
chatFont = Content.Load<SpriteFont>("Fonts//chatFont");
xboxButtons = Content.Load<SpriteFont>("Fonts//xboxControllerSpriteFont");
xboxFont = Content.Load<SpriteFont>("Fonts//MenuFont");
spriteBatch = new SpriteBatch(graphics.GraphicsDevice);
TextureEffect = Content.Load<Effect>("TextureEffect");
// Viewports
leftViewport = GraphicsDevice.Viewport;
rightViewport = GraphicsDevice.Viewport;
leftViewport.Width = leftViewport.Width/2;
rightViewport.Width = rightViewport.Width/2;
rightViewport.X = leftViewport.Width;
//
}
ContentManager에서 Dispose()를 호출합니까? 당신은 어떤 종류의 커스텀 콘텐츠 프로세서/로더를 사용합니까? 모델과 같은 다른 것을 폐기합니까()? 프로그램에서 Dispose()를 호출하고 그 텍스처를 호출 할 수있는 * * 항목이 있습니까? 또한, 오류 메시지의 스택 추적은 무엇입니까? 내가 볼 수있는 것은 코드를로드하는 것입니다. 실패합니까? 처음으로 코드를 실행하거나 미래의 시간을? –
나는 결코 Dispose()를 호출하지 않으며 사용자 정의 컨텐츠 프로세서/로더를 사용하지 않습니다. 어떻게 스택 추적을 얻을 수 있습니까? –
Texture2D를로드하려고 시도 할 때 예외가 발생합니까? 예외는 무엇입니까? 당신은 try ... catch에서 LoadContent의 코드를 감싸고 거기에 잡힌 예외를 우리에게 보낼 수 있습니다. –