방프리
20.03.17 List 자료구조 안에 Transform 정리하기 본문
배치 관련 기능을 추가할 때 가장 염두해야할 사항 중 하나가 바로 상태 되돌리기다.
기본적으로 제공해야하는 기능이며, 없으면 유저한테 가장 욕 먹기 쉬운 부분이라고 생각한다.
(실제로 이 기능이 없으면 한 번 수정할 때 너무 번거롭기 때문이다.)
이 부분을 제작하고 싶어서 각각의 오브젝트에 List<>를 넣어 이동 전 상태를 저장하고 오브젝트를 편집할 때마다
상태값인 Transform을 넣어보기로 했다.
키를 누르면 오브젝트가 이동, 키를 누른 기점을 중심으로 List에 현재 위치값을 저장하도록 했다.
(누르는 것이 수정을 진행하기 위한 준비동작이라 가정한다.)
하지만 충격적이게도 전부 다 같은 값이 나오게 된다. 회전값과 크기 값은 수정하지 않아서 똑같다 할지라도
위치값은 계속 움직여서 수정이 되어야 하는데 4개의 결과값 모두 같다.
개인적인 생각으로는 Transform에 있는 값을 대입했을 때 값이 복사가 되는 것이 아닌 원본의 것을
그대로 가져다가 사용하는 것 같다.
그러면 어쩔 수 없이 새로 생성해서 수정해줘야지
Transform과 같은 구조의 구조체를 생성하여 List<> 객체를 생성하였고,
Add를 할 때마다 새로이 위치값을 생성해주었다.
Transform.... 너란 녀석.....
(참고로 해외 사이트 찾아보니 어떤 사람들은 새로 GameObject 생성한 후에 그곳에 있는 Transform을 가져오는
방식으로 구현한 샘플도 있었다. 하지만 그 방법은 쓸데없는 데이터 생성에 GetComponent까지 써가면서 접근해야 하기
때문에 최적화 관점에서 보기에는 그다지 좋은 방법은 아닌 듯 싶다.)
https://answers.unity.com/questions/823966/add-transform-to-array.html
'GameEngine > UnityEngine' 카테고리의 다른 글
20.07.08 Mixed Reality Tool Kit 개발 기록.... (0) | 2020.07.08 |
---|---|
20.06.30 Unity에서 HTML 코드 파싱하기 (0) | 2020.06.30 |
20.02.13 Unity와 Git 연동하기 (3) | 2020.02.13 |
Unity2D 게임 포트폴리오 개발 일지 D + 6 (0) | 2020.02.02 |
Unity2D 게임 포트폴리오 개발 일지 D + 5 (0) | 2020.01.31 |