유니티 Canvas 하위 오브젝트 순서 제어하기 SetAsLastSibling

2021. 3. 10. 17:51유니티실습

안녕하세요 유니티 비기너입니다.

이번 시간에는 canvas의 하위 객체인 UI 오브젝트들의

노출 순서를 제어하는 방법에 대해 알아보겠습니다.

 

결과 화면

오브젝트의 노출순서를 제어하는 결과 화면입니다.

우측 하이어 라키를 보시면 드래그를 진행 시 순서가 변경되는 것을 확인하실 수 있습니다.

 

 

캔버스 UI 오브젝트들은 하이어라키 상의 하단에 위치할 수 록 먼저 보이게 됩니다.

스크립트

using UnityEngine.EventSystems;


public class Sibling : MonoBehaviour, IDragHandler {

    private RectTransform rectTransform;

    void Awake() {
        rectTransform = GetComponent<RectTransform>();
    }

    public void OnDrag(PointerEventData eventData) {
        rectTransform.SetAsLastSibling();
        transform.position = eventData.position;
    }
}

event system의 IDragHandler를 이용하여 드래그 시 오브젝트를 위치를 지속적으로 변경

 

SetAsLastSibling 사용하여 같은 경로상의(부모 오브젝트가 동일한 자식 오브젝트들)

오브젝트들의 마지막 위치로 변경시켜 우선적으로 노출되도록 제어합니다.

 

반대로 SetAsFirstSibling을 사용하면 가장 첫 번째 위치로 변경합니다.

 

 

해당 함수를 이용하여 게임 내 아이템이 겹치는 인벤토리 또는 상태창을 선택에 따라 변경시키는 등등

여러 가지 방식에 응용이 가능합니다.

 

반응형
그리드형