Ejemplo n.º 1
0
    /// <summary>
    /// 查找目标身上的伤害接收器组件
    /// </summary>
    /// <param name="obj"></param>
    /// <returns></returns>
    static public DamageReceiver FindObjectDamageReceiver(GameObject obj)
    {
        DamageReceiver receiver = obj?.GetComponent <DamageReceiver>();

        if (receiver != null)
        {
            return(receiver);
        }

        DamageReceiverChild receiverChild = obj.GetComponent <DamageReceiverChild>();

        if (receiverChild != null)
        {
            return(receiverChild.Receiver);
        }

        receiver = obj.GetComponentInChildren <DamageReceiver>();
        if (receiver != null)
        {
            return(receiver);
        }

        receiverChild = obj.GetComponentInChildren <DamageReceiverChild>();
        if (receiverChild != null)
        {
            return(receiverChild.Receiver);
        }

        return(null);
    }
Ejemplo n.º 2
0
    /// <summary>
    /// 检查给定物体是否可以接受伤害
    /// </summary>
    /// <param name="obj"></param>
    /// <returns></returns>
    static public bool CheckObjectCanDealDamage(GameObject obj)
    {
        DamageReceiver receiver = obj.GetComponent <DamageReceiver>();

        if (receiver == null)
        {
            DamageReceiverChild component = obj.GetComponent <DamageReceiverChild>();
            if (component != null && component.enabled)
            {
                receiver = component.Receiver;
            }
        }

        if (receiver == null || !receiver.enabled)
        {
            return(false);
        }

        return(true);
    }