Unity/C#

유니티 트랜스 폼 (Transform)

모카쨩 2021. 11. 30. 01:54

 

 

 

공통부모들을 반환

        Transform[] GetCommonParents(params Transform[] targetTransforms)
        {
            if ((targetTransforms == null) || (targetTransforms.Length == 0))
            {
                return null;
            }
            var parentsArray = System.Array.ConvertAll(targetTransforms, x => x.GetComponentsInParent<Transform>());
            var commonParents = parentsArray[0];
            for (int i = 1; i < parentsArray.Length; i++)
            {
                commonParents = System.Array.FindAll(commonParents, x => parentsArray[i].Contains(x));
            }
            return commonParents;
        }

 

 

부모와 자식사이의 노드들을 반환

앞쪽에 있을수록 부모에 가까움

        Transform[] GetNodes(Transform parent,Transform child)
        {
            if ((parent == null) || (child == null))
            {
                return null;
            }
            var parents = child.GetComponentsInParent<Transform>();
            var parentIndex = System.Array.FindIndex(parents, x=>x==parent);
            if (parentIndex < 0)
            {
                return null;
            }
            if (parentIndex == 0)
            {
                return new Transform[] { } ;
            }
            return parents.Take(parentIndex).Reverse().ToArray();
        }