반응형







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public RectTransform viewPortRectTr; // 보는 곳 RectTranform ex) scrollview 의 viewport
public RectTransform contentRectTr; // 리스트 들들어잇는 content transform
 
 
 
// 가변적으로 변하는 content trasform 에 따라 viewPortRectTr 로컬기준으로 Bounds를 구할수 있다.
private readonly Vector3[] m_Corners = new Vector3[4];
 
    private Bounds GetContentBounds()
    {
        if (contentRectTr == null)
            return new Bounds();
 
        var vMin = new Vector3(float.MaxValue, float.MaxValue, float.MaxValue);
        var vMax = new Vector3(float.MinValue, float.MinValue, float.MinValue);
 
        var toLocal = viewPortRectTr.worldToLocalMatrix; // viewPortRectTr의 로컬 매트릭스 가져오기
        contentRectTr.GetWorldCorners(m_Corners); //  contentRectTr 네 각 꼭지점의 vector3
        for (int j = 0; j < 4; j++)
        {
            Vector3 v = toLocal.MultiplyPoint3x4(m_Corners[j]); // viewPortRectTr의 로컬 매트릭스 * vector3 = 각 꼭지점의 contentRectTr 로컬좌표
            vMin = Vector3.Min(v, vMin);
            vMax = Vector3.Max(v, vMax);
        }
 
        // 제일 작은 수로 센터로  크기가 0 인 바운드만들고
        var bounds = new Bounds(vMin, Vector3.zero);
        //제일 큰값 으로 바운드 확
        bounds.Encapsulate(vMax);
        return bounds;
    }
cs


반응형

+ Recent posts