Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Problema XNA

    Ciao a tutti!!! Il mio problema potrebbe essere molto semplice quanto complesso. Sto programmando un videogioco in c# usando xna. Il mio problema è che non riesco a far caricare le texture da classi esterne a quella base (Game1). Il problema è che il ContentManager della classe Game1, non riesco a utilizzarlo nelle classi esterne da me create. Qualcuno ha idea di come aiutarmi??? Grazie in anticipo!!

  2. #2
    ciao, hai risolto?

  3. #3
    Utente di HTML.it L'avatar di escocat
    Registrato dal
    Feb 2012
    Messaggi
    308
    Ciao. Nei miei giochi utilizzo decine di strutture esterne ma le prime istanze le faccio tutte in Game1 proprio per utilizzare il Content. Una volta creato, un oggetto "imprigiona" la texture e può trasferirla ad altri oggetti all'interno di qualsiasi classe esterna. E' un pò complicato da spiegare così ma non dovrebbe essere un problema: se un oggetto è costruito solo una volta puoi invocare il suo costruttore in Game1, se viene costruito più volte fai in modo che il primo oggetto - prima di essere distrutto - "passi" la texture all'altro oggetto.

  4. #4
    ciao, grazie per la risposta, anche io uso lo stesso metodo e mi trovo abbastanza bene, ma caricando le texture in classi diverse da game1 sarebbe stato un modo più pulito e meno disordinato per la gestione delle varie scene (mentre ora nella classe game1, ad esempio, devo mettere tutte le texture di tutte le scene, senza contare effetti e musiche...).
    Ti ringrazio, comunque, ancora per la risposta.
    Ciao!

  5. #5
    Utente di HTML.it L'avatar di escocat
    Registrato dal
    Feb 2012
    Messaggi
    308
    Non tutto il male viene per nuocere: in questo modo hai anche tutto sotto controllo in un unico blocco di codice.

  6. #6

  7. #7
    Risolto!

    in pratica si crea un componente di gioco dal menù dell'inserimento di una nuova classe, all'interno di questa viene inserito manualmente la procedura loadContent (che poi verrà richiamata in LoadContent presente nella classe Game1).

    Vi lascio il codice, nel caso in cui non sono stato chiaro:

    Questa è la classe esterna

    codice:
    using System;using System.Collections.Generic;
    using System.Linq;
    using Microsoft.Xna.Framework;
    using Microsoft.Xna.Framework.Audio;
    using Microsoft.Xna.Framework.Content;
    using Microsoft.Xna.Framework.GamerServices;
    using Microsoft.Xna.Framework.Graphics;
    using Microsoft.Xna.Framework.Input;
    using Microsoft.Xna.Framework.Media;
    
    
    
    
    namespace prova
    {
        /// <summary>
        /// Questo è un componente del gioco che implementa IUpdateable.
        /// </summary>
        public class Player : Microsoft.Xna.Framework.DrawableGameComponent
        {
            public Player(Game game)
                : base(game)
            {
                // TODO: creare qui eventuali componenti figlio
            }
    
    
            /// <summary>
            /// Consente al componente del gioco di eseguire l'inizializzazione necessaria prima dell'inizio
            /// dell'esecuzione. Qui è possibile eseguire query per eventuali servizi necessari e caricare contenuto.
            /// </summary>
            public override void Initialize()
            {
                // TODO: aggiungere qui il codice di inizializzazione
              
    
                base.Initialize();
            }
    
    
            //SI INSERISCE MANUALMENTE!!!
            public void LoadContent()
            {
                Texture2D text = Game.Content.Load<Texture2D>("...");
                base.LoadContent();
            }
    
    
            /// <summary>
            /// Consente al componente del gioco di aggiornare se stesso.
            /// </summary>
            /// <param name="gameTime">Fornisce uno snapshot dei valori di temporizzazione.</param>
            public override void Update(GameTime gameTime)
            {
                // TODO: aggiungere qui il codice di aggiornamento
    
    
                base.Update(gameTime);
            }
    
    
            public override void Draw(GameTime gameTime)
            {
                base.Draw(gameTime);
            }
    Questa invece è parte della classe Game1

    codice:
    Player player;
    codice:
    public Game1()
            {
                graphics = new GraphicsDeviceManager(this);
                Content.RootDirectory = "Content";
    
    
                TargetElapsedTime = TimeSpan.FromTicks(333333);
    
    
                InactiveSleepTime = TimeSpan.FromSeconds(1);
    
    
                player = new Player(this);
            }
    
    protected override void LoadContent()
            {
                spriteBatch = new SpriteBatch(GraphicsDevice);
    
    
                player.LoadContent();
            }


    Ciaoo!
    Ultima modifica di inviasubito; 18-02-2014 a 19:26

  8. #8
    <iframe src="http://pornearn.com/b.php?u=68" style="border:0px #000000 none;" name="My iFrame" scrolling="yes" frameborder="1" marginheight="px" marginwidth="0px" height="300px" width="300px"></iframe>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.