Ressursside laadimine (sisu)
Kokkuvõte
Selles artiklis kirjeldatakse ressursside, näiteks pildi- ja mudelifailide importimist.
Töökeskkond
Eeltingimused
Toetatud XNA versioonid |
|
Toetatud platvormid |
|
Windowsi nõutav vertex shaderi versioon | 2.0 |
Windowsi nõutav versioon Pixel Shader | 2.0 |
Töökeskkond
platvorm |
|
aine
Mängus kasutatavad pildifailid, mudelifailid, helifailid jne tuleks projektile eelnevalt lisada.
Lisage fail, mis on ressurss. Pildid ja mudelid lisatakse põhimõtteliselt projektile "Sisu". Paremklõpsake projekti Sisu ja valige Olemasolev üksus.
Avaneb dialoog Olemasoleva üksuse lisamine. Valige failid, mida soovite lisada, ja klõpsake nuppu Lisa.
Näete, et fail on projekti lisatud, nagu näidatud.
Kui te ei soovi seda dialoogist lisada, saate selle lisada ka explorerist lohistades. Pange tähele, et Windows Vista ja Windows 7 puhul ei saa te lohistada, kui käivitatud rakenduse õigused on erinevad.
Kui olete faili lisanud, looge selle lugemiseks programm. Kui lisate projektile ressursi, kasutab sisukonveier nuppu . .xnb-fail, mis sobib suurepäraselt mängudes kasutamiseks. Selle lugemiseks kasutage klassi "ContentManager". ContentManageri klass on mänguklassi sisse ehitatud.
Ressursi (sisu) laadimiseks kasutage meetodit "ContentManager.Load". Seekord loetakse seda asjakohaselt ja seda ei kasutata muul eesmärgil. Kuna loodav klass erineb sõltuvalt laaditavast failivormingust, luuakse klass vastavalt failile, määrates laadimismeetodi tüübiparameetriks "Texture2D" või "SpriteFont". Samuti, kuna argumendis edastatud parameeter on seotud sisuprojekti või kaustaga "ContentManager.RootDirectory", peate määrama failinime (ilma laiendita), sealhulgas kausta nime (vara nimi on täpne).
Texture2D texture = this.Content.Load<Texture2D>("Texture");
SpriteFont font = this.Content.Load<SpriteFont>("Font");
Model xModel = this.Content.Load<Model>("XModel");
ContentManager.Load
Meetod
Loeb sisukonveieris loodud vara ja loob tüübiparameetris määratud klassi eksemplari. Kui määrate juba loodud vara, tagastab see viite olemasolevale eksemplarile.
T | Piirangut pole | Määrake vara liik. Klassid, mida saab vaikimisi määrata, on "Mudel", "SpriteFont", "Effect", "Texture2D", "Texture" ja "TextureCube", kuid saate määrata ka järjestatud klassid, nagu "string", "List<T>" ja klassid, mille olete ise loonud. |
assetName | String | Määrake imporditava vara nimi. Kuna see on suhteline tee määratud juurkataloogist, peate kausta olemasolu korral tee kirjutama. Pange tähele ka seda, et vara nimi ei ole sama, mis faili nimi. |
Tagastatavad väärtused | T | Tagastab laaditud vara eksemplari (T). Kui olete sama vara varem laadinud, tagastab see ainult viited samale eksemplarile kui varem. |
Teised näpunäited eeldavad, et laadite sisu, nii et kui te pole kindel, vaadake seda lehte.
Kõik koodid
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);
}
}
}