/**
         * GameplayTags 是否包含ContainerToCheck
         * {"A.1","B.1"}.HasAll({"A","B"}) will return False
         */
        public bool HasAllExact(CGameplayTagContainer ContainerToCheck)
        {
            if (ContainerToCheck.IsEmpty())
            {
                return(true);
            }

            foreach (CGameplayTag OtherTag in ContainerToCheck.GameplayTags)
            {
                if (!GameplayTags.Contains(OtherTag))
                {
                    return(false);
                }
            }

            return(true);
        }
        /**
         * 本container是否包含ContainerToCheck的任意一个tag, 连ParentTags都会比较
         * {"A.1"}.HasAny({"A","B"}) will return True, {"A"}.HasAny({"A.1","B"}) will return False
         */
        public bool HasAny(CGameplayTagContainer ContainerToCheck)
        {
            if (ContainerToCheck.IsEmpty())
            {
                return(false);
            }

            foreach (CGameplayTag otherTag in ContainerToCheck.GameplayTags)
            {
                if (GameplayTags.Contains(otherTag) || ParentTags.Contains(otherTag))
                {
                    return(true);
                }
            }

            return(false);
        }
        /**
         * GameplayTags 和 ParentTags 是否包含ContainerToCheck
         * * {"A.1","B.1"}.HasAll({"A","B"}) will return True, {"A","B"}.HasAll({"A.1","B.1"}) will return False
         */
        public bool HasAll(CGameplayTagContainer ContainerToCheck)
        {
            //ContainerToCheck什么都没有,所以肯定返回true
            if (ContainerToCheck.IsEmpty())
            {
                return(true);
            }

            foreach (CGameplayTag OtherTag in ContainerToCheck.GameplayTags)
            {
                if (!GameplayTags.Contains(OtherTag) && !ParentTags.Contains(OtherTag))
                {
                    return(false);
                }
            }

            return(true);
        }