Φόρτωση πόρων (περιεχόμενα)
περίληψη
Περιγράφει τον τρόπο εισαγωγής πόρων, όπως αρχεία εικόνας και αρχεία μοντέλου.
Περιβάλλον λειτουργίας
Προϋποθέσεις
Υποστηριζόμενες εκδόσεις XNA |
|
Υποστηριζόμενες πλατφόρμες |
|
Windows Απαιτούμενη έκδοση σκίασης Vertex | 2.0 |
Απαιτούμενη έκδοση Pixel Shader των Windows | 2.0 |
Περιβάλλον λειτουργίας
πλατφόρμα |
|
ουσία
Τα αρχεία εικόνας, τα αρχεία μοντέλου, τα αρχεία ήχου κ.λπ. που χρησιμοποιούνται στο παιχνίδι πρέπει να προστεθούν στο έργο εκ των προτέρων.
Προσθέστε ένα αρχείο που θα είναι πόρος. Οι εικόνες και τα μοντέλα προστίθενται βασικά στο έργο "Περιεχόμενο". Κάντε δεξί κλικ στο έργο περιεχομένου και επιλέξτε Υπάρχον στοιχείο.
Ανοίγει το παράθυρο διαλόγου Προσθήκη υπάρχοντος στοιχείου. Επιλέξτε τα αρχεία που θέλετε να προσθέσετε και κάντε κλικ στο κουμπί Προσθήκη.
Μπορείτε να δείτε ότι το αρχείο έχει προστεθεί στο έργο όπως φαίνεται.
Εάν δεν θέλετε να το προσθέσετε από το παράθυρο διαλόγου, μπορείτε επίσης να το προσθέσετε σύροντας και αποθέτοντας από τον εξερευνητή. Ωστόσο, λάβετε υπόψη ότι στα Windows Vista και Windows 7, δεν μπορείτε να κάνετε μεταφορά και απόθεση εάν τα δικαιώματα της εφαρμογής που ξεκίνησε είναι διαφορετικά.
Αφού προσθέσετε το αρχείο, δημιουργήστε ένα πρόγραμμα για να το διαβάσετε. Όταν προσθέτετε έναν πόρο σε ένα έργο, η διοχέτευση περιεχομένου χρησιμοποιεί το αρχείο . .xnb, το οποίο είναι ιδανικό για χρήση σε παιχνίδια. Για να το διαβάσετε, χρησιμοποιήστε την κλάση "ContentManager". Η κλάση ContentManager είναι ενσωματωμένη στην κλάση Game.
Για να φορτώσετε έναν πόρο (περιεχόμενο), χρησιμοποιήστε τη μέθοδο "ContentManager.Load". Αυτή τη φορά, διαβάζεται σωστά και δεν χρησιμοποιείται για άλλο σκοπό. Δεδομένου ότι η κλάση που θα δημιουργηθεί διαφέρει ανάλογα με τη μορφή αρχείου που πρόκειται να φορτωθεί, δημιουργείται μια κλάση σύμφωνα με το αρχείο καθορίζοντας "Texture2D" ή "SpriteFont" ως παράμετρο τύπου της μεθόδου φόρτωσης. Επίσης, δεδομένου ότι η παράμετρος που μεταβιβάζεται στο όρισμα είναι σχετική με το έργο περιεχομένου ή το φάκελο που καθορίζεται στο "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);
}
}
}