본문 바로가기

Old/Unity18

RPG Project - Event 퀘스트를 구현하던 팀원이 넘겨줘서 몬스터 Die마다 monsterID를 넘겨주는 코드를 짜달라고 했는데, 내가 이벤트 핸들러를 구현해서 새로운 이벤트를 만들고 Invoke해야 하는 줄 알고.. 잘못 해갔다가 회의하면서 노션에 정리해둔 내용 보여줬는데 팀원이 당황했다...ㅎㅎ 그냥 구현되어 있는 Action에 매개변수만 넘기면 되는거였어서... 정말.. 바보였다... 다음부턴 커뮤니케이션을 잘 하기로 했고 덕분에 소통의 중요성을 깨달았다.. int MonsterID(object sender, EventArgs e) { if (this.CompareTag("Ork")) { monsterID = 2000; } else if (this.CompareTag("Golem")) { monsterID = 2005; }.. 2023. 9. 16.
Event Win API 동작구조 WinMain() 함수를 통해 윈도우 응용 프로그램이 시작됨 사용자 입력 이벤트는 모두 메세지로 전환됨 윈도우 운영체제는 이벤트에 따른 메세지를 메세지 큐에 추가 메인 메세지 루프는 메세지 큐에서 메세지를 꺼내서 처리 (FIFO 구조) 윈도우 종료 메세지를 처리하면 메인 메세지 루프가 종료되고 응용 프로그램도 종료됨 C#에서 이벤트 작성 과정 이벤트 발생 시 처리해줄 메서드 작성 (이벤트 핸들러) 이벤트 핸들러의 형태와 일치하는 델리게이트 선언 (System.EventHandler 델리게이트를 사용하면 이 과정 생략됨) 이벤트 선언 (미리 정의된 이벤트인 경우 이 과정 생략됨) 이벤트에 이벤트 처리기 등록 이벤트 발생 이벤트와 대리자의 차이점 : 이벤트는 외부에서 직접 사용할 수 .. 2023. 8. 31.
RPG Project 오류 일지 - Respawn 오브젝트 풀에 10개의 오브젝트를 할당해두고, 몬스터가 죽어도 전체 개수는 계속 10개로 유지하도록 구현했다. 구현하는 중에 오브젝트 풀을 Manager로 선언해서 싱글톤 패턴을 적용할까 싶었지만, Monster에만 관여하므로 굳이 싶었다.. (프리팹이 더 다양했으면 처음부터 Manager로 올렸을거다) 그래서 최대한 지금 상태에서 생각할 수 있는 방법을 적용하려고 머리를 굴렸다. 유니티 함수의 생명주기를 다 고려해보다가 죽은 몬스터의 인덱스를 찾는건 Update()가 가장 적절하다고 생각했고, 리스폰해주는 함수의 위치를 생각하는건 꽤 어려웠다.. 이 참에 생명 주기 함수를 모두 복습했고, 코루틴도 복습했지만 적절한 위치가 없었고, 코루틴은 메모리 낭비가 큰 것 같아 InvokeReapeating을 사용.. 2023. 8. 15.
Scriptable Object Scriptable Object : 클래스 인스턴스와는 별도로 대량의 데이터를 저장하는 데 사용할 수 있는 데이터 컨테이너 유니티 오브젝트를 상속받은 클래스로 Unity Serialize 시스템을 가지고 있음 serialize: 클래스나 오브젝트를 스트링이나 일차원 배열 형태로 변환하는 것 실제 파일을 열어 보면 저장된 텍스트 내용 확인 가능 데이터 컨테이너로 데이터 공유에 사용할 수 있고, 이를 통해 메모리 사용량 줄일 수 있음 Scriptable Object는 데이터를 참조 형태로 오브젝트에서 가져올 수 있게 함으로써 메모리 할당을 최소화하고 고유한 값을 가질 수 있게 함 주요 사용 사례) 사본이 생성되는 것을 방지하여 프로젝트의 메모리 사용을 줄임 연결된 MonoBehaviour 스크립트에 변경되지.. 2023. 7. 24.
디자인 패턴 요약 상속: A is B 장점) 부모 클래스로부터 물려받은 부분은 다시 쓸 필요가 없으므로 재사용 면에 있어서 효율적임 단점) 부모, 조상 클래스가 될 공통된 최소 필수 집합을 개발자가 미리 예상하기 어려움 컴포넌트들끼리 커플링이 심함 컴포넌트: A has B 각자의 기능을 가지고 있는 스스로 동작하는 독립적인 부품 컴포넌트를 뗀다고 해서 오브젝트의 다른 컴포넌트에 영향이 가는 것은 없음 코드의 의존성을 줄이고 재활용성을 높임 인벤토리 기능은 컴포넌트로 구현하는 것이 좋음 컴포넌트란 : 로직을 기능별로 컴포넌트화하는 것, 기능들을 나누어 각각 독립적인 클래스로 분리 한 개체가 여러 분야를 서로 커플링 없이 다룰 수 있게 해줌 인터페이스 & 다형성과 연관 : 여러 알고리즘을 하나의 추상적인 접근점(인터페이스)를.. 2023. 7. 24.
체감형 AR 디자인 - 최적화 텀프를 어느 정도 진행하다보니, 오류나 어려웠던 점들을 정리해두려고 오랜만에 티스토리 들어왔다 요즘 거의 텀프랑 팀플에만 시간을 다 쓰는 것 같고 그러니 24시간이 부족하다는 생각이 든다.. 암튼,, 우선 monster 프리팹이 3가지로, 색이 각각 다르다 그래서 monsterFactory를 3개 만들어서 하나의 오브젝트 풀에 담고, 조건에 맞게 씬에 생성하도록 했다. 생성은 SetActive를 활용했고, 총알에 맞으면 SetActive(false)하도록 충돌처리를 했다. 몬스터가 생성될 때 StartCoroutine()을 사용해봤다. 총알도 마찬가지로 오브젝트 풀을 사용했고, 터치를 입력 받을 때마다 생성되도록 했다. 배열로 써둔 코드를 최적화할 때 좀 어려웠고 생각보단 시간 투자를 많이 한 것 같다... 2023. 5. 17.