문제/상황

해결법

   // 튜토리얼 화살표를 배치하는 메서드
    public void Place(RectTransform target, bool placeOnTop)
    {
        //  타겟의 실제 높이 계산
        Vector3[] targetCorners = new Vector3[4];
        target.GetWorldCorners(targetCorners);
        float actualTargetHeight = targetCorners[1].y - targetCorners[0].y;

        // 화살표의 실제 높이 계산 
        Vector3[] indicatorCorners = new Vector3[4];
        m_RectTransform.GetWorldCorners(indicatorCorners);
        float actualIndicatorHeight = 
		        Mathf.Abs(indicatorCorners[1].y - indicatorCorners[0].y); 
    
        // 간격 계산 
        float margin = 0f;
        float indicatordist = (actualTargetHeight / 2f) + 
				        (actualIndicatorHeight / 2f) + margin;
    
        // 타겟의 정중앙 위치 계산
        _targetPosition = (targetCorners[0] + targetCorners[2]) / 2f;
        Vector3 position = _targetPosition;
        Quaternion rotation;
    
        if(placeOnTop)
        {
            position.y += indicatordist;
            rotation = Quaternion.Euler(0, 0, 180.0f);
        }
        else
        {
            position.y -= indicatordist;
            rotation = Quaternion.identity;
        }

        m_RectTransform.gameObject.SetActive(true);
        m_RectTransform.position = position;
        m_RectTransform.localRotation = rotation;
    }

결론

Canvas Scaler의 영향을 받지 않고, 어떤 해상도에서도 튜토리얼 화살표를 정확한 위치에 일관되게 표시하는 데 성공했습니다. 이 과정을 통해 반응형 UI 와 좌표계 처리에 대한 실질적인 이해도를 크게 향상시킬 수 있었습니다.