(왼쪽이 내 화면이고 오른쪽이 강의화면임)
게임중에 일시정지 되면서 메인메뉴 뜨는걸 만들려고 하는데
강의보고 하려니까 강의처럼 안되더라
강의에선 왼쪽에 화면에 빨간 줄 쳐진곳처럼 설정하라고 했는데 따라해보니
오른쪽 강의 화면처럼 인게임 화면이 뒤로가고 검은화면이 앞으로 와서 덮어져야되는데
내 화면을 보면 인게임이 앞으로 고정되있음..ㄷㄷ
그래서 찾아보니 빨간줄 처진곳이 Screen Space - Camera를 Screen Space - Overlay로 바꾸니까
화면이 덮어지긴 하는데 버튼이 안보임 ㄷㄷ;;
뭘 건들여야 하는지 모르겠아..
1개의 댓글
무분별한 사용은 차단될 수 있습니다.
알파스트라이크
Screen Space - Camera를 하면 카메라를 기준으로 위치를 잡고
Screen Space - Overlay를 하면 카메라 상관없이 Display 기준으로 위치를 잡음
문제는 이 설정을 왔다리 갔다리 하면 처음에 생성된 위치로 돌아가는게 아니라 일부 위치는 유지가 되는데 몇몇 위치 옵션은 기본설정으로 가버려서 잘못하면 위치 정렬이 꼬임 예를 들면 Camera->Overlay->Camera로 하는 경우 Overlay로 바꿨을 때 Scene창에서 캔버스 Rect가 카메라랑 전혀 상관없는 위치로 날아가는게 보일거임. 여기서 Camera로 다시 돌아오면 카메라 영역을 기준으로 돌아오는데 카메라 방향이 Z축에 정렬된 경우를 기준으로 Z포지션은 초기화되기 때문에 원래 위치랑 달라짐. 카메라 방향이 직교좌표계에 정렬된게 아니라 임의의 각을 가지고 있다면 더욱 특이하게 정렬되겠지.
그리고 하이어리키에서 자식개체는 부모개체의 좌표에 종속되지만 부모개체에 대한 상대적 좌표를 추가로 가지는 속성을 가지고 있는데 이 상대좌표는 자식개체가 가지는 값이니 당연히 유지가 됨. 즉 부모개체의 좌표가 10, 0, 0이고 Rotation도 0, 0, 0 자식 개체는 좌표가 0, 10, 0 Rotation은 0, 0, 0이라 하면 절대좌표계상에선 자식개체는 10, 10, 0이 되는거지
때문에 부모개체를 Screen Space-Camera를 하든 Screen Space -Overlay를 하든 자식개체를 그 부모개체가 스크린에서 렌더링되는 위치 기준으로 영역을 벗어나 버리면 당연히 카메라엔 안잡힘. X, Y, Z축 어느방향으로든 말이야. 이게 카메라 clipping plane에도 연계되고 게임내 객체들(배경, 유닛 등)에도 연계되기 때문에 자식객체들 위치 조정은 부모개체의 위치를 고려해서 잡아야함.
문제로 돌아가서 네 유니티 화면을 보면 부모개체가 Screen Space Camera모드인데 별개의 Rect가 오른쪽 위에 사각형 틀로 보이는걸 보니 자식객체(검은색 반투명으로 넣은 배경과 버튼)이 그 영역에서 왼쪽 아래로 빠져나와 있지?
Screen Space Overlay면 부모개체 사각형 틀이 화면(물론 옵션과 모니터 비율에 따라 화면 전체에 딱 맞진 않을 수 있어. 예를 들면 크기 960X720으로 잡고 Match를 Height를 1로 잡으면 16:9와이드 모니터에선 수직은 정확하게 1:1매치가 되지만 좌우가 모자라지 하지만 위치 기준은 가운데를 중심으로 Match옵션 기준에 따라 맞게 되어 있음)의 기준영역이라 보면 되고 Screen Space Camera면 부모개체의 사각형 틀이 카메라의 기준영역을 중심으로 좌표가 잡힌다고 보면 돼.
근데 거기서 검은 배경과 버튼이 어긋나 있잖아. 그러면 버튼이 화면기준에서 안보이게 되는거지.
그리고 영역자체는 3d이기 때문에 Z축도 카메라 Clipping plane영역 밖에 있거나 게임오브젝트 뒤에 있거나 하면 x, y축은 맞아도 안보일 수 있어
그리고 렌더 모드의 Screen Space를 바꿀 때 Sorting Layer에서 선택한 Layer의 순위에 따라 안보일 수도 있음. Sorting Layer 다른 오브젝트가 속한 레이어보다 리스트 아래쪽에 있으면 다른 오브젝트 보다 앞에 있으면 보이지만 리스트상 앞에 있으면 공간(카메라 또는 스크린 공간)상 앞에 있어도 가림.