آن اسکرین کنٹرول کے ساتھ ٹچ-آپٹیمائزڈ ان پٹ کنٹرول استعمال کریں

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

تصدیق کا ماحول

Windows
  • ونڈوز 11
یونٹی ایڈیٹر
  • 2020.3.25f1
ان پٹ سسٹم پیکیج
  • 1.2.0

اس ٹوٹکے کے لئے ضروری شرائط

مندرجہ ذیل ترتیبات اس ٹپ کی وضاحت کے لئے بنیاد کے طور پر پیشگی بنائی گئی ہیں۔

آپ کو مندرجہ ذیل تجاویز سے بھی واقف ہونا چاہئے:

ٹچ کے لئے آن اسکرین کنٹرول کے بارے میں

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

یونٹی کا ان پٹ سسٹم پیکیج ٹچ تعاملات کی نقل کرنے کے لئے آن اسکرین کنٹرول کا استعمال کرتا ہے جیسے وہ کنٹرولر کے ذریعہ کنٹرول کیے گئے ہوں۔

آن اسکرین کنٹرول سے پہلے

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

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

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

سب سے پہلے ، اپنے ان پٹ کو ظاہر کرنے کے لئے کینوس پر ایک ٹیکسٹ آبجیکٹ رکھیں۔ بعد میں ، ہم ٹچ آبجیکٹ کو نیچے رکھیں گے ، لہذا کچھ جگہ چھوڑ دیں۔

سب سے پہلے ، مندرجہ ذیل کے مطابق ایک ایکشن نقشہ بنائیں: آپ وہی ایکشن بنا رہے ہیں جو آپ نے ایکشن میپ بیان کرتے وقت کیا تھا۔

چونکہ ایکشن نقشے کی وضاحت اہم چیز نہیں ہے ، لہذا پابند کرنا آسان ہے۔ عمل کے نقشوں کی تفصیلات کے لئے مندرجہ ذیل صفحے کا حوالہ دیں۔

اس بار ، ان پٹ کا حصول "پیغامات بھیجیں" یا "اتحاد کے واقعات کو پکاریں" کے بجائے اسکرپٹ کے ذریعہ انجام دیا جاتا ہے۔ یہ اسکرپٹس تک بھی محدود نہیں ہے ، اور اگر آپ "پیغامات بھیجیں" وغیرہ استعمال کرتے ہیں تو بھی یہ مناسب طریقے سے کام کرتا ہے۔

اس بات کو یقینی بنائیں کہ آپ نے ایکشن میپ سے کوڈ تیار کیا ہے۔

اسکرپٹ اس طرح نظر آتا ہے: یہ تقریبا وہی ہے جو ایکشن نقشے کی وضاحت کرتے وقت ہوتا ہے۔

using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.UI;

public class InputActionScript : MonoBehaviour
{
  /// <summary>情報を表示させるテキストオブジェクト。</summary>
  [SerializeField] private Text TextObject;

  /// <summary>アクションマップから自動生成されたクラス。</summary>
  private InputActionSample _actionMap;

  private void Awake()
  {
    // 各操作を行ったときに呼ばれるイベントを設定する
    _actionMap = new InputActionSample();
    _actionMap.Action2D.Move.performed += context => OnMove(context);
    _actionMap.Action2D.Attack.performed += context => OnAttack(context);
    _actionMap.Action2D.Move.canceled += context => OnMove(context);
    _actionMap.Action2D.Attack.canceled += context => OnAttack(context);
  }

  private void OnEnable()
  {
    // このオブジェクトが有効になったときにアクションマップを有効にする
    _actionMap.Enable();
  }

  private void OnDisable()
  {
    // このオブジェクトが無効になったときにアクションマップが余計な動作を起こさないように無効にする
    _actionMap.Disable();
  }

  /// <summary>
  /// Move 操作をした時に呼ばれるメソッドです。
  /// </summary>
  /// <param name="context">コールバックパラメータ。</param>
  public void OnMove(InputAction.CallbackContext context)
  {
    // Move の入力量を取得
    var vec = context.ReadValue<Vector2>();
    TextObject.text = $"Move:({vec.x:f2}, {vec.y:f2})\n{TextObject.text}";
  }

  /// <summary>
  /// Attack 操作をした時に呼ばれるメソッドです。
  /// </summary>
  /// <param name="context">コールバックパラメータ。</param>
  public void OnAttack(InputAction.CallbackContext context)
  {
    // Attack ボタンの状態を取得
    var value = context.ReadValueAsButton();
    TextObject.text = $"Attack:{value}\n{TextObject.text}";
  }
}

اسکرپٹ اس EventSystem سے منسلک ہے۔

یہ دیکھنے کے لئے کھیل چلائیں کہ آیا یہ ایکشن نقشے کے طور پر کام کرتا ہے۔

اسکرین پر بٹن

آن اسکرین بٹن گیم پیڈ پر بٹن دبانے کی نقل کرتا ہے ، جیسے اے اور بی ، اور جب آپ اسکرین پر کسی چیز کو چھوتے ہیں تو کی بورڈ پر چابیاں۔ ویسے تو یہ ٹچ کہتا ہے لیکن یہ ماؤس کلک کے ساتھ بھی کام کرتا ہے۔

سب سے پہلے اسکرین پر بٹن رکھیں۔ چونکہ آپ صرف ایک جزو منسلک کرتے ہیں ، لہذا یہ بٹن کے علاوہ دیگر اشیاء کے ساتھ کام کرتا ہے۔

جزو سے ان پٹ > آن اسکرین بٹن شامل کریں۔

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

اس بات کو یقینی بنائیں کہ جب آپ گیم چلاتے ہیں تو حملہ ظاہر ہوتا ہے اور بٹن پر کلک کرتے ہیں۔ اگر یہ چھونے کے قابل آلہ ہے تو ، آپ تصدیق کرسکتے ہیں کہ یہ چھونے کے ساتھ کام کرتا ہے۔

آن اسکرین اٹک

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

اسکرین پر ایک بٹن آبجیکٹ رکھیں جو ٹچ اسٹک ہوگی۔ ہم یہاں ایک بٹن استعمال کر رہے ہیں ، لیکن یہ بٹن کے علاوہ دیگر اشیاء کے ساتھ بھی کام کرتا ہے۔

اجزاء شامل کریں کے تحت ، ان پٹ > آن اسکرین اسٹک منتخب کریں۔

کنٹرول پاتھ سے ، ایکشن نقشے میں بیان کردہ گیم پیڈ لیفٹ اسٹک منتخب کریں۔

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

اس معاملے میں ، ہم نے ایک بٹن رکھا ہے ، لیکن گول فریم اور گول چھڑی آبجیکٹ رکھ کر اسے مجازی چھڑی کی طرح دکھانا بھی ممکن ہے۔

ویسے ، اس منقولہ رینج کو آن اسکرین اسٹک کی "موومنٹ رینج" میں تبدیل کیا جاسکتا ہے۔