Загрузка ресурсов (содержимого)

Страница обновлена :
Дата создания страницы :

сводка

Описывает, как импортировать ресурсы, такие как файлы изображений и файлы моделей.

リソース(コンテンツ)の読み込み

Условия эксплуатации

Необходимые условия

Поддерживаемые версии XNA
  • 2.0
  • 3.0
  • 3.1
  • 4.0
Поддерживаемые платформы
  • Windows (XP SP2 или более поздняя версия, Vista, 7)
  • Консоль Xbox 360
  • Windows Phone 7
Требуемая версия вершинного шейдера Windows 2.0
Требуемая версия пиксельного шейдера Windows 2.0

Условия эксплуатации

платформа
  • Windows 7
  • Консоль Xbox 360
  • Эмулятор Windows Phone 7

вещество

Файлы изображений, моделей, звуковые файлы и т.д., используемые в игре, должны быть добавлены в проект заранее.

ファイルを追加します

Добавьте файл, который будет ресурсом. Изображения и модели в основном добавляются в проект «Контент». Щелкните правой кнопкой мыши проект «Ресурсы» и выберите «Существующий элемент».

既存項目の追加ダイアログ

Откроется диалоговое окно Добавить существующий элемент. Выберите файлы, которые вы хотите добавить, и нажмите кнопку «Добавить».

Вы увидите, что файл добавлен в проект, как показано на рисунке.

ドラッグ&ドロップでも追加可能

Если вы не хотите добавлять его из диалогового окна, вы также можете добавить его, перетащив его из проводника. Однако обратите внимание, что в Windows Vista и Windows 7 вы не можете перетаскивать, если разрешения запущенного приложения отличаются.

После того, как вы добавили файл, создайте программу для его чтения. При добавлении ресурса в проект конвейер содержимого использует . .xnb, который отлично подойдет для использования в играх. Для его чтения используйте класс "ContentManager". Класс ContentManager встроен в класс Game.

Для загрузки ресурса (контента) используется метод "ContentManager.Load". На этот раз он читается надлежащим образом и не используется для других целей. Поскольку создаваемый класс различается в зависимости от формата загружаемого файла, класс создается в соответствии с файлом путем указания "Texture2D" или "SpriteFont" в качестве параметра type метода Load. Кроме того, поскольку параметр, передаваемый в аргументе, относится к контентному проекту или папке, указанной в "ContentManager.RootDirectory", необходимо указать имя файла (без расширения), включая имя папки (имя ресурса, если быть точным).

Texture2D texture = this.Content.Load<Texture2D>("Texture");
SpriteFont font = this.Content.Load<SpriteFont>("Font");
Model xModel = this.Content.Load<Model>("XModel");

ContentManager.Load метод

Считывает ресурс, созданный конвейером содержимого, и создает экземпляр класса, указанного в параметре type. Кроме того, если вы укажете ресурс, который уже был создан, он вернет ссылку на существующий экземпляр.

T Без ограничений Укажите тип актива. Классы, которые могут быть указаны по умолчанию, включают "Model", "SpriteFont", "Effect", "Texture2D", "Texture" и "TextureCube", но вы также можете указать сериализуемые классы, такие как "string", "List<T>", и классы, которые вы создали сами.
assetName (имя_актива) струна Укажите имя ресурса, который вы хотите импортировать. Так как это относительный путь из указанного корневого каталога, то нужно записать путь, если есть папка. Кроме того, обратите внимание, что имя ресурса не совпадает с именем файла.
Возвращаемые значения T Возвращает экземпляр (T) загруженного ресурса. Если вы загружали тот же ресурс ранее, он возвращает только ссылки на тот же экземпляр, что и раньше.

Другие советы предполагают, что вы загружаете контент, поэтому, пожалуйста, обратитесь к этой странице, если вы не уверены.

Все коды

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;
#if WINDOWS_PHONE
using Microsoft.Xna.Framework.Input.Touch;
#endif

namespace LoadResource
{
    /// <summary>
    /// ゲームメインクラス
    /// </summary>
    public class GameMain : Microsoft.Xna.Framework.Game
    {
        /// <summary>
        /// グラフィックデバイス管理クラス
        /// </summary>
        private GraphicsDeviceManager graphics = null;

        /// <summary>
        /// スプライトのバッチ化クラス
        /// </summary>
        private SpriteBatch spriteBatch = null;


        /// <summary>
        /// GameMain コンストラクタ
        /// </summary>
        public GameMain()
        {
            // グラフィックデバイス管理クラスの作成
            this.graphics = new GraphicsDeviceManager(this);

            // ゲームコンテンツのルートディレクトリを設定
            this.Content.RootDirectory = "Content";

#if WINDOWS_PHONE
            // Windows Phone のデフォルトのフレームレートは 30 FPS
            this.TargetElapsedTime = TimeSpan.FromTicks(333333);

            // バックバッファサイズの設定
            this.graphics.PreferredBackBufferWidth = 480;
            this.graphics.PreferredBackBufferHeight = 800;

            // フルスクリーン表示
            this.graphics.IsFullScreen = true;
#endif
        }

        /// <summary>
        /// ゲームが始まる前の初期化処理を行うメソッド
        /// グラフィック以外のデータの読み込み、コンポーネントの初期化を行う
        /// </summary>
        protected override void Initialize()
        {
            // TODO: ここに初期化ロジックを書いてください

            // コンポーネントの初期化などを行います
            base.Initialize();
        }

        /// <summary>
        /// ゲームが始まるときに一回だけ呼ばれ
        /// すべてのゲームコンテンツを読み込みます
        /// </summary>
        protected override void LoadContent()
        {
            // テクスチャーを描画するためのスプライトバッチクラスを作成します
            this.spriteBatch = new SpriteBatch(this.GraphicsDevice);

            Texture2D texture = this.Content.Load<Texture2D>("Texture");
            SpriteFont font = this.Content.Load<SpriteFont>("Font");
            Model xModel = this.Content.Load<Model>(@"XModel");
        }

        /// <summary>
        /// ゲームが終了するときに一回だけ呼ばれ
        /// すべてのゲームコンテンツをアンロードします
        /// </summary>
        protected override void UnloadContent()
        {
            // TODO: ContentManager で管理されていないコンテンツを
            //       ここでアンロードしてください
        }

        /// <summary>
        /// 描画以外のデータ更新等の処理を行うメソッド
        /// 主に入力処理、衝突判定などの物理計算、オーディオの再生など
        /// </summary>
        /// <param name="gameTime">このメソッドが呼ばれたときのゲーム時間</param>
        protected override void Update(GameTime gameTime)
        {
            // Xbox 360 コントローラ、Windows Phone の BACK ボタンを押したときに
            // ゲームを終了させます
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
            {
                this.Exit();
            }

            // TODO: ここに更新処理を記述してください

            // 登録された GameComponent を更新する
            base.Update(gameTime);
        }

        /// <summary>
        /// 描画処理を行うメソッド
        /// </summary>
        /// <param name="gameTime">このメソッドが呼ばれたときのゲーム時間</param>
        protected override void Draw(GameTime gameTime)
        {
            // 画面を指定した色でクリアします
            this.GraphicsDevice.Clear(Color.CornflowerBlue);

            // TODO: ここに描画処理を記述します

            // 登録された DrawableGameComponent を描画する
            base.Draw(gameTime);
        }
    }
}