اسپرائٹ کو ظاہر کریں

جب صفحے کی تازہ کاری :
صفحہ تخلیق تاریخ :

خلاصہ

ساخت (تصویر) لوڈ کریں اور اسے اسکرین پر ڈسپلے کریں۔

スプライトを表示させる

آپریٹنگ ماحول

ضروری شرائط

XNA ورژن کی حمایت کی
  • 2.0
  • 3.0
  • 3.1
  • 4.0
حمایت یافتہ پلیٹ فارم
  • ونڈوز (ایکس پی ایس پی 2 یا اس کے بعد، وسٹا، 7)
  • ایکس بکس 360
  • ونڈوز فون 7
Windows Required Vertex Shader Version 2.0
Windows Required پکسل شادer Version 2.0

آپریٹنگ ماحول

پلیٹ فارم
  • ونڈوز 7
  • ایکس بکس 360
  • ونڈوز فون 7 ایمولیٹر

مادہ

اسپرائٹ کیا ہے؟

اسکرین پر تصاویر کھینچنے کے لئے ایک مستطیل علاقہ۔ یہ خصوصیت اکثر 2 ڈی گیمز میں استعمال کی جاتی ہے ، لیکن یہ اکثر 3 ڈی میں جعلی 2 ڈی امیج ڈرائنگ کے طور پر بھی استعمال ہوتی ہے۔

ایکس این اے میں ، ہر چیز کو 3 ڈی کثیر الجہت میں کھینچنا ضروری ہے ، لہذا آپ اسکرین پر جو تصویر کھینچتے ہیں وہ کثیر الجہت کا استعمال کرتے ہوئے ایک جعلی اسپرائٹ ہے۔ تاہم ، کثیر الجہتی سے آگاہ ہونے کی کوئی ضرورت نہیں ہے ، اور آپ آسانی سے انہیں کھینچ سکتے ہیں۔

تصاویر کی تیاری

چونکہ تصویر ظاہر ہوتی ہے ، لہذا ایک تصویری فائل تیار کرنا ضروری ہے۔ نمونے میں ، نیچے دی گئی تصویر استعمال کی گئی ہے۔

スプライトとして表示させる画像

میں 128×128 کے سائز کے ساتھ پی این جی فائل استعمال کر رہا ہوں ، لیکن یہ کسی بھی سائز کا ہوسکتا ہے۔ اس کے علاوہ ، تصویری فائل کی شکل جسے پڑھا جاسکتا ہے وہ ڈیفالٹ طور پر درج ذیل فائل ہے۔

  • .bmp
  • .dds
  • .dib
  • .hdr
  • .jpg
  • .pfm
  • .png
  • .پی پی ایم
  • .tga

اپنے منصوبے میں ایک تصویر شامل کریں

نمونے میں ، تصویری فائل کو "مواد" پروجیکٹ میں ڈال دیا گیا ہے۔ اپنے پروجیکٹ میں تصویری فائلوں کو شامل کرنے کے بارے میں تفصیلات کے لئے مندرجہ ذیل صفحے کا حوالہ دیں۔

プロジェクトに Texture.png を追加

کھیت

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

/// <summary>
/// テクスチャー
/// </summary>
private Texture2D texture = null;

اسپرائٹ کھینچنے کے لئے ، اسپرائٹس کو کھینچنے کے لئے بیچ کرنے کے لئے "اسپرائٹ بیچ" تیار کریں اور 2 ڈی امیج ڈیٹا ذخیرہ کرنے کے لئے "ٹیکسچر 2 ڈی" تیار کریں۔

وسائل بنانا اور لوڈ کرنا

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

    // テクスチャーをコンテンツパイプラインから読み込む
    this.texture = this.Content.Load<Texture2D>("Texture");
}

لوڈ گرافکس مواد کے طریقہ کار کے اندر ، اسپرائٹ بیچ کلاس بنائیں۔ دلیل کے طور پر گرافکس ڈیوائس پاس کریں۔

اس کے بعد مواد مینیجر.لوڈ کا طریقہ کار لوڈ کرنے اور بناوٹ بنانے کے لئے استعمال کیا جاتا ہے۔ قسم پیرامیٹر کے لئے "ٹیکسچر 2 ڈی" کلاس اور دلیل کے لئے اثاثہ نام کی وضاحت کریں۔

SpriteBatch constructor

کلاس "اسپرائٹ بیچ" کی ایک مثال بنائیں جو اسپرائٹس کی ڈرائنگ کو بیچ کرتی ہے۔

graphicsDevice GraphicsDevice ڈرائنگ کے لئے استعمال کرنے کے لئے گرافکس ڈیوائس کی وضاحت کرتا ہے۔

ڈرائنگ

// スプライトの描画準備
this.spriteBatch.Begin();

// スプライトを描画する
this.spriteBatch.Draw(this.texture, Vector2.Zero, Color.White);

// スプライトの一括描画
this.spriteBatch.End();

ڈرا کے طریقہ کار میں متن کھینچیں۔

اسپرائٹ کھینچنے کے لئے ، "اسپرائٹ بیچ.ڈرا" طریقہ استعمال کریں ، لیکن آپ کو ڈرائنگ سے پہلے اور بعد میں بالترتیب "اسپرائٹ بیچ ڈاٹ اسٹارٹ" اور "اسپرائٹ بیچ ڈاٹ اینڈ" طریقوں کو کال کرنے کی ضرورت ہے۔

اسپرائٹ بیچ ڈاٹ ڈرا کے طریقہ کار کی پہلی دلیل آپ کی تخلیق کردہ "ٹیکسچر 2 ڈی" کلاس ہے۔ اس سے آپ درآمد شدہ تصویری فائل دیکھ سکیں گے۔

SpriteBatch.Begin طریقہ

اسپرائٹ کھینچنے سے پہلے اسے کال کریں۔ اندرونی طور پر ، ہم اسپرائٹس ڈرائنگ کے لئے ضروری ترتیبات بنا رہے ہیں۔

SpriteBatch.Draw طریقہ

اسپرائٹ ڈرائنگ بیچ کی فہرست میں ایک اسپرائٹ شامل کرتا ہے۔

بنت Texture 2D اسپرائٹ کے طور پر ظاہر کرنے کے لئے ساخت کی وضاحت کرتا ہے۔
پوزیشن ویکٹر2 وہ پوزیشن جہاں اسپرائٹ کو ظاہر کیا جانا چاہئے۔ اسکرین کے اوپری بائیں طرف کے مقابلے میں اسکرین کوآرڈینیٹس میں وضاحت کریں۔ اسپرائٹ کی اصل اوپری بائیں پوزیشن میں ہوگی۔
رنگ رنگ اسپرائٹ کے رنگ کو گنا کرنے کے لئے رنگ کی وضاحت کرتا ہے۔ اگر آپ رنگ.سفید کی وضاحت کرتے ہیں تو ، یہ اسپرائٹ کے بنیادی رنگ میں ظاہر ہوتا ہے۔ اگر رنگ.سیاہ کی وضاحت کی گئی ہے تو ، اسپرائٹ کو اس کے رنگ سے قطع نظر مکمل سیاہ رنگ میں دکھایا جاتا ہے۔ فارمولا "نتیجہ = اسپرائٹ رنگ * رنگ" ہے.

SpriteBatch.End طریقہ

تمام بیچے ہوئے اسپرائٹس کھینچیں۔ ڈرائنگ آرڈر ، ڈرائنگ اسٹیٹ ، اور اسی طرح اسپرائٹ بیچ شروع کرنے کے طریقہ کار میں وضاحت کی گئی ہے۔ اگر ضروری ہو تو ، رینڈر اسٹیٹ کو اس حالت میں واپس کردیا جاتا ہے جس میں وہ اسپرائٹ بیچ سے پہلے تھا۔

スクリーンとスプライトの原点

کمپیوٹر وغیرہ پر استعمال ہونے والے ڈسپلے کے ساتھ کوئی مسئلہ نہیں ہے ، لیکن ایکس بکس 360 سے اینالاگ ٹی وی پر آؤٹ پٹ کرتے وقت ، آپ اوپری بائیں طرف دکھائے جانے والے اسپرائٹ کو دیکھنے کے قابل نہیں ہوسکتے ہیں۔ اس معاملے میں ، آپ کو اسپرائٹ کی ڈسپلے پوزیشن کو ایڈجسٹ کرنے کی ضرورت ہے ، لیکن اس کی وضاحت دوسرے سیکشن میں کی جائے گی۔

تمام کوڈز

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

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

        /// <summary>
        /// テクスチャー
        /// </summary>
        private Texture2D texture = 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);

            // テクスチャーをコンテンツパイプラインから読み込む
            this.texture = this.Content.Load<Texture2D>("Texture");
        }

        /// <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);

            // スプライトの描画準備
            this.spriteBatch.Begin();

            // スプライトを描画する
            this.spriteBatch.Draw(this.texture, Vector2.Zero, Color.White);

            // スプライトの一括描画
            this.spriteBatch.End();

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