Menu
CoddyTech

أشرطة الصحة

جزء من قسم إنشاء ألعاب حقيقية في رحلة Unity على Coddy. الدرس 10 من 60.

الشريط الذي يفرغ هو صورة واجهة مستخدم، مع ضبط نوع الصورة على مملوء. يظهر هذا الإعداد بعد تعيين صورة المصدر للصورة؛ أما عند ضبطها على None، فيخفيها المفتش. تؤدي طريقة التعبئة الأفقية مع أصل التعبئة الأيسر إلى تقليص الشريط باتجاه طرفه الأيسر، وتحدد fillAmount، من 0 إلى 1، مقدار الجزء المرسوم منه. وتُظهر صورة داكنة خلفه الجزء الفارغ. يقيّد Unity قيمة fillAmount، لذا فإن 1.4 ترسم شريطًا ممتلئًا، و-0.2 ترسم شريطًا فارغًا.

fillAmount هو نسبة الصحة المتبقية: الصحة مقسومة على الحد الأقصى لها. عند استخدام حقول int، تكون هذه قسمة صحيحة، ونتيجة 350 / 500 هي 0، لذا حوّل أحد الطرفين إلى float أولًا. يوجد Image ضمن UnityEngine.UI. يُحدَّث شريط صحة الزعيم هذا بعد كل ضربة:

public Image bossBar;
public int bossMaxHp = 500;
private int bossHp = 500;

public void Hit(int damage)
{
    bossHp = Mathf.Max(bossHp - damage, 0);
    bossBar.fillAmount = (float)bossHp / bossMaxHp;   // 350 / 500 = 0.7
}

يمكن أن يتغير لون الشريط تبعًا للصحة أيضًا: bossBar.color = Color.Lerp(Color.red, Color.green, bossBar.fillAmount); يكون أخضر عندما يكون الشريط ممتلئًا، ويتحول إلى الأحمر كلما فرغ.

challenge icon

التحدي

سهل

اعرض درع الفارس وصحته على شريطين.

  1. اكتب ShowBars(): shieldBar.fillAmount = (float)shield / maxShield;، واكتب الأمر نفسه لـ healthBar باستخدام hp وmaxHp. استدعِها في Start().
  2. في TakeDamage، يمتص الدرع Mathf.Min(amount, shield) ويُخصم الباقي من hp، من دون أن تقل قيمته عن 0. ثم استدعِ ShowBars().

اضغط «العب» وامشِ فوق الأشواك: يفرغ شريط الدرع أولًا. ثم اضغط «تحقق».

جرّب بنفسك

using UnityEngine;
using UnityEngine.UI;

public class Knight : MonoBehaviour
{
    public Image healthBar;
    public Image shieldBar;
    public int maxHp = 80;
    public int maxShield = 40;
    private int hp;
    private int shield;

    void Start()
    {
        hp = maxHp;
        shield = maxShield;
        // املأ الشريطين
    }

    public void TakeDamage(int amount)
    {
        // يمتص الدرع ما يستطيع من الضرر؛ ويُخصم الباقي من hp حتى يصل إلى 0. ثم اعرض الشريطين.
    }
}

جميع دروس إنشاء ألعاب حقيقية

تدرّب بنفسك: Playground لـ Unity