Exemplo n.º 1
0
    /// <summary>
    /// 当BaseUnit被攻击时,会调用该回调事件
    /// </summary>
    private void OnSubHp(BaseUnit source, float subHp, DamageType damageType, HpShowType showType)
    {
        string unitName      = string.Empty;//string.Empty在内存堆里分配空间 ""在内存栈里分配空间
        string missStr       = "闪避";
        string damageTypeStr = string.Empty;
        string damageHp      = string.Empty;

        if (showType == HpShowType.Miss)
        {
            Debug.Log(missStr);
            return;
        }

        if (source.IsHero)
        {
            unitName = "英雄";
        }
        else
        {
            unitName = "士兵";
        }
        damageTypeStr = damageType == DamageType.Critical ? "暴击" : "普通攻击";
        damageHp      = subHp.ToString();
        Debug.Log(unitName + damageTypeStr + damageHp);
    }
Exemplo n.º 2
0
    //OnBeAttacked方法需要3个参数,分别是
    //表示伤害数字的float型的harmNumber
    //表示是否是暴击伤害的bool型的isCritical
    //表示是否是闪避的bool型isMiss
    protected virtual void OnBeAttacked(float harmNumber, bool isCritical, bool isMiss)
    {
        DamageType damageType = DamageType.Normal;
        HpShowType showType   = HpShowType.Damage;

        if (isCritical)
        {
            damageType = DamageType.Critical;
        }
        if (isMiss)
        {
            showType = HpShowType.Miss;
        }
        //首先判断是否有方法订阅了该事件,如果有则通知它们
        if (OnSubHp != null)
        {
            OnSubHp(this, harmNumber, damageType, showType);
        }
    }