이번엔 퀘스트를 구현해봤어
기본 알고리즘부터 설명해볼게
모든 퀘스트 n개와 진행할 수 있는 최대 퀘스트 3개.
그리고 퀘스트의 상태는 0 1 2 3으로 나눠서
0은 비활성화상태(퀘스트진행가능)
1은 진행상태(현재 진행중이고 퀘스트3개값에 포함)
2는 완료가능상태
3은 퀘스트비활성화상태.(다시 퀘스트 진행이 불가능)
이렇게 정했어
그럼 일단 모든 퀘스트 n개의 대한 배열과 각 퀘스트 n개에 대한 상태체크용 배열이 필요해
퀘스트 n개에다가 그대로 사용하면 되는거 아니냐 라고 생각했는데.
그러기에는 퀘스트도 각각의 구분이 가능하기위해 중복되지 않는 숫자를 사용해야 되서 따로 배열을 추가했어.
request는 내가 아무생각없이 만들고 사용을 안했어 나중에 지울거야
quest 1 2 3은 quest에 키값들을 집어넣어서 진행 때 엇갈리지않도록 진행할 퀘스트창같은거야. 배열 써도 될거같긴한데 난 5개이상 아니면 그냥하는게 좋더라.
대화창이 좀 많이 많은데.
평소에 대화할 때 대사.
퀘스트를 진행할 때 대사.
퀘스트를 받아줬을 때와 안받아줬을 때의 대사.
퀘스트 진행중일 때 조언을 해주는 대사.
퀘스트 완료했을 때의 대사.
이렇게 정했고.
각 각 하나씩만 있는건 너무 조잡해보여서
두개 이상 집어넣고 랜덤출력을 하는 식으로 만들려고해.
아직 구현은 안했어.
questNumber는 배열 구분을 해주기 위해서 만들었어.
예를 들어서 이 NPC는 4번 째 퀘스트를 진행시켜주는거야 라고 하면. NPC의 questNumber는 4가 되는거지.
dialogueCount는 위에 랜덤출력을 하거나 아니면 여러번 대화했을 때 카운트가 올라서 대화가 바뀌는걸 해보고싶어서 집어넣었어
물론 구현은 안했어 아직.
퀘스트창에 해당 퀘스트를 넣거나 빼는 함수를 만들었어.
순서대로 1 2 3 안에서 꽉찼을 경우에는 따로 대사를 만들건데 그건 아직 구현 못했어
지금 보니 구현을 대부분 못했네ㅅㅂ
내가 질문하면서 적었던 코드가 이 코드야.
이프문을 3중으로 쓸까 말까 하다가 코드보기좋게 2중으로 하고 함수를 따로 만들어서 실행하라는 걸 보고 해봤어.
전체적으로 보기에는 정말 간단한데 구체적으로 세밀하게 조작하려니까 정말 어렵더라.
생각도 잘 안굴러가고 멍청하다는걸 좀 많ㅇ ㅣ깨달았어.
배열에 questNumber값을 넣어서 퀘스트를 확인하고 그 상태에 따라서 나눴어.
0일경우에는 일반적인 진행을 하고 1일 때는 조언을 해주며. 2일 때(완료시)의 대사와 3일 때(완료 이후)의 대사로 나눴어.
솔직히 이건 대사 하나하나 작성하는게 더 귀찮더라. 뭔가.., 뭔가 그래 나만 그래?
코루틴들까지는 전부 쓰기에는 대화창 자체를 다 찍는거라서
내가 귀찮아
그러니까 이정도까지만 설명할게
대충 이런식으로 굴러가더라
따로 스크립트를 더만들어서
이렇게 완료로 변환 가능하도록 만들었어.
박스컬라이더 잡아다가 ㅋㅋ
이게 인스팩터 내용
퀘스트 인스펙터 변화까지.
다음은 전부 완성하면 그떄 말해줄게
혹시 좀 더 좋은 방법이나 간편해지거나 최적화하는 방법이 있다면 알려줬으면해
내가 유니티를 만져보는것도 C#을 만져보는것도 이번이 처음이라서 이런방식 왜 안하노 병신아 해봤자 내가 그걸 아예 모르니까ㅠ
복잡해보이긴하네 까딱잘못하면 버그 우수수나오겠다 - dc App
버그 안나오도록 사전에 공통적으로 써먹을 수 있도록 만들어야지 뭐
엑셀이나 스프레드시트 써보는건어떰? - dc App
외부 프로그램을 쓸수가있어?
에셋도있을텐데 이름이기억안난다 그거하나사~~ - dc App
함 찾아볼겡~ - dc App
ㅎㅇㅌ - dc App