인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

Vanellope i님의 프로필 이미지
Vanellope i

작성한 질문수

[유니티 레벨 업!] 모듈식으로 개발하는 퀘스트&업적 시스템

이벤트를 만들때

작성

·

368

·

수정됨

0

퀘스트를 응용해서 이벤트를 만들려고합니다.

이벤트는 단순히 퀘스트를 상속받아서 하면될거같은데 문제는 이벤트 발생시 각 발생 프로세스를 어떻게 구현할지가 고민입니다.

예를들어 어떤 이벤트는 공간 이동후 적이 몰려오는 이벤트가있고 또 어떤 이벤트는 공간 이동 후 인질을 구출하라는 이벤트가 발생 하는식인데

이벤트를 스크립터블 오브젝트로 만들고 거기에 변수로 이벤트 액션이라는 스크립터블오브젝트를 만들어서 해당 이벤트 액션에 각 기능 프로세스를 구현 하려고했는데 변수 세팅하기가 힘들고 먼가 하드 코딩이 될거같아요..

혹시 저런식에 이벤트를 어떻게 만드는게 깔끔한가요??

답변 1

0

Developer G님의 프로필 이미지
Developer G
지식공유자

안녕하세요.
정확히 만들려고하시는 것이 어떤 것인지 정보가 부족하여 답변이 부정확할 수 있는 점 양해부탁드립니다.

제가 이해한바에 따르면 Quest를 상속받는 Event를 만들고, Event Action으로 몬스터 웨이브, 인질 구출을 구현하시겠다는 얘기 같은데요, Event Action으로 통일 시키는 것보다는 각 기능을 따로 구현하는게 나을 것 같습니다.

예를 들어, 몬스터 웨이브는 EnemyRaidSytem을 만들어서, 공간 이동 로직이 실행된 후 코드나 Trigger를 통해서 EnemyRaidSystem을 Start하여(EnemyRaidSystem.Start()) 적이 몰려오게하고(만약 몬스터 웨이브를 모두 막아내야 공간에서 탈출할 수 있는 Event라면 몬스터 웨이브를 막아내는 Quest도 주면 될 것 같습니다.),
마찬가지로 인질 구출은 공간 이동 로직이 실행된 후 코드나 Trigger를 통해 인질을 특정 위치로 데려가거나 인질 주변의 적을 모두 제거하면 완료되는 Quest를 부여하는 방식으로 구현할 수 있을 겁니다.

몬스터 웨이브, 인질 구출은 객관적으로 봤을 때 구조적 통일성이 없기 때문에, 로직을 억지로 통일 시킬려고하면 반대로 통일 시키지 않은 것보다 못하게 코드가 꼬일 수가 있습니다. 스스로 판단했을 때 '규모가 크다' 싶은 시스템과 '통일성이 없다' 여겨지는 시스템은 따로 구현하고, 필요한 곳에서 그 시스템을 실행하는 방식으로 구현할 필요가 있습니다.

감사합니다.

Vanellope i님의 프로필 이미지
Vanellope i
질문자

아하 감사합니다 너무 모듈식으로만

구현하려고 한거였네요..

Vanellope i님의 프로필 이미지
Vanellope i

작성한 질문수

질문하기