Načítavajú sa zdroje (obsah)
súhrn
Táto téma popisuje, ako importovať zdroje, ako sú súbory s obrázkami a súbory modelov.
Prevádzkové prostredie
Predpoklady
Podporované verzie XNA |
|
Podporované platformy |
|
Požadovaná verzia Vertex Shader systému Windows | 2.0 |
Požadovaná verzia Pixel Shader pre Windows | 2.0 |
Prevádzkové prostredie
nástupište |
|
látka
Obrazové súbory, modelové súbory, zvukové súbory atď. Použité v hre by mali byť do projektu pridané vopred.
Pridajte súbor, ktorý bude zdrojom. Obrázky a modely sa v zásade pridávajú do projektu "Obsah". Kliknite pravým tlačidlom myši na projekt Obsah a vyberte položku Existujúca položka.
Otvorí sa dialógové okno Pridať existujúcu položku. Vyberte súbory, ktoré chcete pridať, a kliknite na tlačidlo Pridať.
Môžete vidieť, že súbor bol pridaný do projektu, ako je znázornené.
Ak ho nechcete pridať z dialógového okna, môžete ho pridať aj potiahnutím myšou z prieskumníka. Upozorňujeme však, že v systémoch Windows Vista a Windows 7 nemôžete presúvať myšou, ak sú povolenia spustenej aplikácie odlišné.
Po pridaní súboru vytvorte program na jeho čítanie. Keď pridáte zdroj do projektu, kanál obsahu použije súbor . .xnb, ktorý je ideálny na použitie v hrách. Ak si ho chcete prečítať, použite triedu "ContentManager". Trieda ContentManager je vstavaná do triedy hier.
Ak chcete načítať zdroj (obsah), použite metódu "ContentManager.Load". Tentoraz sa číta vhodne a nepoužíva sa na iný účel. Keďže trieda, ktorá sa má vytvoriť, sa líši v závislosti od formátu súboru, ktorý sa má načítať, trieda sa vytvorí podľa súboru zadaním parametra typu metódy Načítania "Texture2D" alebo "SpriteFont". Keďže parameter odovzdaný v argumente je relatívny k projektu obsahu alebo priečinku zadanému v "ContentManager.RootDirectory", musíte zadať názov súboru (bez prípony) vrátane názvu priečinka (presný názov majetku).
Texture2D texture = this.Content.Load<Texture2D>("Texture");
SpriteFont font = this.Content.Load<SpriteFont>("Font");
Model xModel = this.Content.Load<Model>("XModel");
ContentManager.Load
metóda
Načíta aktívum vytvorené kanálom obsahu a vytvorí inštanciu triedy zadanej v parametri typu. Ak zadáte aktívum, ktoré už bolo vytvorené, vráti odkaz na existujúcu inštanciu.
T | Bez obmedzenia | Zadajte typ diela. Triedy, ktoré je možné predvolene zadať, zahŕňajú "Model", "SpriteFont", "Efekt", "Texture2D", "Texture" a "TextureCube", ale môžete tiež určiť sériové triedy, ako napríklad "reťazec", "Zoznam<T>" a triedy, ktoré ste sami vytvorili. |
Názov aktíva | povrázok | Zadajte názov aktíva, ktoré chcete importovať. Keďže ide o relatívnu cestu zo zadaného koreňového adresára, musíte ju napísať, ak existuje priečinok. Upozorňujeme tiež, že názov majetku nie je rovnaký ako názov súboru. |
Vrátené hodnoty | T | Vráti inštanciu (T) načítaného zdroja. Ak ste už predtým načítali rovnaké dielo, vráti iba odkazy na rovnakú inštanciu ako predtým. |
Ostatné tipy predpokladajú, že načítavate obsah, takže ak si nie ste istí, pozrite si túto stránku.
Všetky kódy
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);
}
}
}