UnityEngine.UI.MaskUtilities.FindRootSortOverrideCanvas C# (CSharp) Method

FindRootSortOverrideCanvas() public static method

Find a root Canvas.

public static FindRootSortOverrideCanvas ( Transform start ) : Transform
start UnityEngine.Transform Search start.
return UnityEngine.Transform
        public static Transform FindRootSortOverrideCanvas(Transform start)
        {
            List<Canvas> results = ListPool<Canvas>.Get();
            start.GetComponentsInParent<Canvas>(false, results);
            Canvas canvas = null;
            for (int i = 0; i < results.Count; i++)
            {
                canvas = results[i];
                if (canvas.overrideSorting)
                {
                    break;
                }
            }
            ListPool<Canvas>.Release(results);
            return ((canvas == null) ? null : canvas.transform);
        }

Usage Example

コード例 #1
0
        /// <summary>
        /// See IMaterialModifier.GetModifiedMaterial
        /// </summary>
        public virtual Material GetModifiedMaterial(Material baseMaterial)
        {
            var toUse = baseMaterial;

            if (m_ShouldRecalculateStencil)
            {
                var rootCanvas = MaskUtilities.FindRootSortOverrideCanvas(transform);
                m_StencilValue             = maskable ? MaskUtilities.GetStencilDepth(transform, rootCanvas) : 0;
                m_ShouldRecalculateStencil = false;
            }

            // if we have a enabled Mask component then it will
            // generate the mask material. This is an optimisation
            // it adds some coupling between components though :(
            Mask maskComponent = GetComponent <Mask>();

            if (m_StencilValue > 0 && (maskComponent == null || !maskComponent.IsActive()))
            {
                var maskMat = StencilMaterial.Add(toUse, (1 << m_StencilValue) - 1, StencilOp.Keep,
                                                  CompareFunction.Equal, ColorWriteMask.All, (1 << m_StencilValue) - 1, 0);
                StencilMaterial.Remove(m_MaskMaterial);
                m_MaskMaterial = maskMat;
                toUse          = m_MaskMaterial;
            }

            return(toUse);
        }
All Usage Examples Of UnityEngine.UI.MaskUtilities::FindRootSortOverrideCanvas