선택된 캐릭터가 계속 하나로 고정되는 버그가 있었다.
캐릭터 생성 시 캐릭터에 붙어있는 버튼에 Delegate로 함수를 할당해 줬는데 이게 문제였다.
for (int j = 0; j < 4; j++) Character.transform.Find("BaseCharacter").Find("Buttons").Find("Button" + Convert.ToString(j)).GetComponent<Button>().onClick.AddListener(delegate { SaveRequestObject(Character); });
마지막으로 이동된 캐릭터로만 선택되는 버그였다.
Delegate로 인해 마지막으로 이동된 캐릭터로 모든 버튼의 함수들이 지정되는 것으로 보인다.
본래 스크립트에서 캐릭터 생성 시 스크립트로 버튼 기능을 설정해 주었는데
캐릭터 프리팹 단계에서 해당 캐릭터 자신을 가리키도록 버튼 기능을 설정해 해결했다.
과거 캐릭터를 집중해서 볼 수 있는 카메라 기능을 넣다가 실패했었다.
기존 카메라의 확대 축소를 이용하여 구현하고 싶었지만, 생각처럼 잘되지 않았다.
그래서 우선은 세 번째 카메라를 추가해 선택된 캐릭터만 크게 보는 채 따라가도록 설정해 구현해 두었다.
// GameController Script
// 카메라 모드로 진입
if (IsCameraOn)
{
SelectArrow.SetActive(false);
CharacterCamera.GetComponent<Camera>().depth = -1;
GameObject.Find("Main Camera").GetComponent<Camera>().depth = -2;
GameObject.Find("Caffe Camera").GetComponent<Camera>().depth = -3;
CharacterCamera.GetComponent<Camera>().transform.localPosition = new Vector3(RequestObejct.transform.localPosition.x, RequestObejct.transform.localPosition.y, RequestObejct.transform.localPosition.z - 100.0f);
CharacterCamera.GetComponent<Camera>().transform.LookAt(RequestObejct.transform);
CharacterCamera.GetComponent<Camera>().orthographicSize = 1;
// 관찰용이므로 클릭하거나 터치하게되면 모드 종료
if (Input.touchCount > 0 || Input.GetMouseButtonDown(0) || Input.GetMouseButton(0) || Input.GetMouseButtonUp(0)) IsCameraOn = !IsCameraOn;
}
'프로젝트 > 알부수기' 카테고리의 다른 글
| 알부수기 결과 (3) | 2023.10.10 |
|---|---|
| 2023. 09. 12 x 데이터 삭제 로직 (0) | 2023.10.10 |
| 2023. 09. 06 x ZoomIn 실패 (0) | 2023.10.10 |
| 2023. 09. 05 x 부자연스러운 캐릭터 이동 및 데이터 관리 (0) | 2023.10.10 |
| 2023. 08. 30 x One Scene & Two Camera (0) | 2023.10.10 |