광주소프트웨어마이스터고등학교
에서는 막달
GSM 페스티벌
이라는 것을 진행한다
학교에서 하는 하나의 작은 해커톤이며, 약 두 달동안 팀들과 하나의 작품을 만들어 내는 행사다
아직 1학년인 우리는 각반의 같은 번호끼리 팀이 되었다
모두 어색하고 각자 다른 전공을 가졌지만, 결과적으론 무사히 작품을 만들 수 있었다
당연하지만, 유니티 클라이언트 개발 실력을 기를 수 있었다
위에서는 xml 파일 파싱과 서버 연결정도만 설명했지만, 그 외에도 자잘한 버그들과, UI 배치 등 여러 문제들을 해결하며 개발 실력을 늘렸다
학교에서 만난 선배님들과 멘토님 덕분에 새로운 코드를 만나도 두렵지 않았다
뿐 아니라 에러를 수정하면서, 코드를 어떻게 관리 해야하는지에 대해서 따로 공부하기도 했다
⬆ 위 글은 다시 프로젝트를 진행할때 공부했던 글이다
위의 겻과 연결되는 것이다
새로운 기능을 한 개 만들면 2배로 에러들이 나왔다
결국 개발 중반 전부 삭제하고 다시 만들기도 했다
그때마다 포기하고 싶은 마음이 들었지만 여태까지 했던 게 아까웠고, 주변에 지켜봐 주는 사람이 있어서 끝까지 마무리 지을 수 있었다
그러면서, 프로젝트에 대한 책임감과 포기하지 않는 끈기를 배웠다
이번 프로젝트 전에도 여러 프로젝트를 진행하면서 여러 사람들과 협업 하였다
그때마다 커뮤니케이션 능력이 프로젝트의 완성도와 직접적으로 연관되어 있다는걸 알 수 있었다
이번에는 기획을 담당했던 친구와 의견충돌이 잦았다
기획에서 클라이언트 직무에 대한 이해부족이 문제였다
이런 상황들은 학교 내에 다른 팀들한테도 나타났다
그들중 대부분이 서로의 의견차이로 싸우게 되고 결국 틀어져서 갈라서게 된 팀들도 있었다
그러나 나는 다른 팀원들에게 나의 입장을 차분히 설명해 설득시켰다
나의 의견을 내세우면서, 상대방을 이해하려는 태도를 가지게 되었다
나의 이런 노력을 알아준 팀원은 그 뒤로 서로의 의견을 빠르게 이해하고 피드백을 받아들이게 되었다
이 게임은 텍스트 기반 게임이기 때문에 대사 스크립트를 관리하는 것이 게임의 가장 중요한 부분이였다
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
[System.Serializable]
public struct Dialogue
{
[Tooltip("대사 치는 캐릭터 이름")]
public string[] names;
[Tooltip("대사 내용")]
[TextArea(3, 10)]
public string[] sentences;
public Sprite[] img;
public Dialogue(string[] names, string[] sentences, Sprite[] img)
{
this.names = names;
this.sentences = sentences;
this.img = img;
}
}
⬆대사의 구조를 짜서
<?xml version="1.0" encoding="utf-8"?>
<dataroot>
<!--시작-->
<!--버튼-->
<Start>
<ID>1</ID>
<Name></Name>
<Dialogue>태어난 지 10000일 되는 새미누리는 오늘도 기운 없이 일어났다</Dialogue>
</Start>
<Start>
<ID>2</ID>
<Name></Name>
<Dialogue>그녀는 세레스라는 행성에서 살고 있다</Dialogue>
</Start>
<Start>
<ID>3</ID>
<Name></Name>
<Dialogue>새미누리는 하루 벌어 하루 먹고 산다</Dialogue>
</Start>
<Start>
<ID>4</ID>
<Name></Name>
<Dialogue>새미누리는 동생을 만나기 위해 돈을 많이 벌어야 한다</Dialogue>
</Start>
<Start>
<ID>5</ID>
<Name></Name>
<Dialogue>새미누리는 피를 팔아 많은 돈을 벌 것이다</Dialogue>
</Start>
<!--공원-->
<!--버튼-->
<Park>
<ID>1</ID>
<Name></Name>
<Dialogue>많은 사람이 있는 광장.</Dialogue>
</Park>
<Park>
<ID>2</ID>
<Name> </Name>
<Dialogue>높은 분수가 설치된 공원 가운데를 중심으로 숲과 은하가 둘러쌓여 있다</Dialogue>
</Park>
<Park>
<ID>3</ID>
<Name></Name>
<Dialogue>분수 옆에서 복권을 파는 것 같다</Dialogue>
</Park>
<Park>
<Id>4</Id>
<Name></Name>
<Dialogue>복권 하나에 100크레딧이다</Dialogue>
</Park>
<Park>
<Id>5</Id>
<Name></Name>
<Dialogue>한 번 해볼까?</Dialogue>
</Park>
<!--숫자 3개 다 맞췄을 때-->
<Winning>
<ID>1</ID>
<Name></Name>
<Dialogue>카드에 뽑힌 숫자 3개가 모두 똑같았다</Dialogue>
</Winning>
<Winning>
<ID>2</ID>
<Name></Name>
<Dialogue>새미누리는 9744크래딧을 벌었다</Dialogue>
</Winning>
<!--틀렸을 때-->
<Loseing>
<ID>1</ID>
<Name></Name>
<Dialogue>새미누리는 100 크레딧을 그냥 날렸다</Dialogue>
</Loseing>
<!--혈액 관리소-->
<!--버튼-->
<BloodShop>
<ID>1</ID>
<Name></Name>
<Dialogue>혈액관리소는 몸만 건강하다면 모든 피를 사주고 있다</Dialogue>
</BloodShop>
<BloodShop>
<ID>2</ID>
<Name></Name>
<Dialogue>새미누리는 혈액 채취기를 향해 손을 뻗었다</Dialogue>
</BloodShop>
<!--건강한 상태-->
<GoodBlood>
<Id>1</Id>
<Name></Name>
<Dialogue>혈액 채취기가 새미누리를 스캔하더니</Dialogue>
</GoodBlood>
<GoodBlood>
<Id>2</Id>
<Name></Name>
<Dialogue>모니터에 초록색 화면이 뜬다</Dialogue>
</GoodBlood>
<GoodBlood>
<Id>3</Id>
<Name></Name>
<Dialogue>새미누리의 팔에서 피 500ml가 빠져나갔다</Dialogue>
</GoodBlood>
<GoodBlood>
<Id>4</Id>
<Name></Name>
<Dialogue>새미누리의 통장에 5000크레딧이 들어왔다</Dialogue>
</GoodBlood>
<!--건강하지 못한 상태-->
<BadBlood>
<Id>1</Id>
<Name></Name>
<Dialogue>혈액 채취기가 새미누리를 스캔하더니</Dialogue>
</BadBlood>
<BadBlood>
<Id>2</Id>
<Name></Name>
<Dialogue>모니터에 초록색 화면이 뜬다</Dialogue>
</BadBlood>
<BadBlood>
<Id>3</Id>
<Name></Name>
<Dialogue>새미누리는 빈손으로 혈액관리소를 나갈 수 밖에 없었다</Dialogue>
</BadBlood>
<!--항구-->
<!--버튼-->
<Spaceport>
<ID>1</ID>
<Name></Name>
<Dialogue>새미누리는 승강기를 탔다</Dialogue>
</Spaceport>
<Spaceport>
<ID>2</ID>
<Name></Name>
<Dialogue>올라갈수록 수직항력이 사라지면서 몸이 가벼워졌다</Dialogue>
</Spaceport>
<Spaceport>
<ID>3</ID>
<Name></Name>
<Dialogue>새미누리는 난간을 잡으며 우주항구에 도착했다</Dialogue>
</Spaceport>
<Spaceport>
<ID>4</ID>
<Name></Name>
<Dialogue>새미누리는 동생이 있는 유로파로 가고 싶다</Dialogue>
</Spaceport>
<Spaceport>
<ID>5</ID>
<Name></Name>
<Dialogue>티켓을 사려면 35,000,000 크레딧이 필요하다</Dialogue>
</Spaceport>
<!--집-->
<!--버튼-->
<House>
<ID>1</ID>
<Name></Name>
<Dialogue>새미누리는 지친 몸을 이끌고 정리를 한 뒤 침대에 누웠다</Dialogue>
</House>
<House>
<ID>2</ID>
<Name></Name>
<Dialogue>새미누리는 창문 밖에 별자리를 보면서 스르르 잠이 든다</Dialogue>
</House>
<House>
<ID>3</ID>
<Name></Name>
<Dialogue>그날 밤, 새미누리는 꿈을 꾼다</Dialogue>
</House>
<!--상점-->
<!--버튼-->
<Market>
<ID>1</ID>
<Name></Name>
<Dialogue>새미누리는 생필품을 사러 잡상품 판매소에 갔다</Dialogue>
</Market>
<!--돈이 없었을 시-->
<NoMoney>
<ID>1</ID>
<Name></Name>
<Dialogue>새미누리는 돈이 없다</Dialogue>
</NoMoney>
<!--물건들을 샀을 때-->
<Ramen>
<ID>1</ID>
<Name></Name>
<Dialogue>새미누리는 라면으로 허기를 달랬다</Dialogue>
</Ramen>
<Pill>
<ID>1</ID>
<Name></Name>
<Dialogue>약을 먹으니 몸이 회복되는 느낌이다</Dialogue>
</Pill>
<Knife>
<ID>1</ID>
<Name></Name>
<Dialogue>새미누리는 삶이 힘들긴 하지만,</Dialogue>
</Knife>
<Knife>
<ID>2</ID>
<Name></Name>
<Dialogue>아직 그런 선택을 할 정도는 아니다</Dialogue>
</Knife>
<!--엔딩-->
<!--해피 엔딩-->
<HappyEnding>
<ID>1</ID>
<Name></Name>
<Dialogue>새미누리는 유로파에 무사히 도착하였다</Dialogue>
</HappyEnding>
<HappyEnding>
<ID>2</ID>
<Name></Name>
<Dialogue>새미누리는 우주항구에서 해미누리를 열심히 찾아다녔다</Dialogue>
</HappyEnding>
<HappyEnding>
<ID>3</ID>
<Name>새미누리</Name>
<Dialogue>혹시 함선 조종사 해미누리를 보신적이 있나요??</Dialogue>
</HappyEnding>
<HappyEnding>
<ID>4</ID>
<Name></Name>
<Dialogue>새미누리는 열심히 돌아다니다가 우연히 대합실 앞을 지나쳤다</Dialogue>
</HappyEnding>
<HappyEnding>
<ID>5</ID>
<Name></Name>
<Dialogue>익숙한 얼굴이 안내원 로봇과 싸우고 있었다</Dialogue>
</HappyEnding>
<HappyEnding>
<ID>6</ID>
<Name>해미누리</Name>
<Dialogue>운석충돌 위험 때문에 한시간이나 일찍 출발한다는게 말이 돼?</Dialogue>
</HappyEnding>
<HappyEnding>
<ID>7</ID>
<Name>안내원 로봇</Name>
<Dialogue>죄송합니다, 저희는 규정대로 처리하였습니다</Dialogue>
</HappyEnding>
<HappyEnding>
<ID>8</ID>
<Name>해미누리</Name>
<Dialogue>세레스로 가기 위해 내가 노가다 뛰면서 얼마나 열심히 표값을 모은줄 알아?</Dialogue>
</HappyEnding>
<HappyEnding>
<ID>9</ID>
<Name>안내원 로봇</Name>
<Dialogue>민원창구로 가서 보상절차를 밟아주시길 바랍니다</Dialogue>
</HappyEnding>
<HappyEnding>
<ID>10</ID>
<Name>해미누리</Name>
<Dialogue>지금 돈이 중요해? 이번 껄 놓치면 다음 함선까지 몇년을 기다려야 하는지 알아?</Dialogue>
</HappyEnding>
<HappyEnding>
<ID>11</ID>
<Name>해미누리</Name>
<Dialogue>2년 6개월... 자그마치 2년 6개월이라고!!</Dialogue>
</HappyEnding>
<HappyEnding>
<ID>12</ID>
<Name>안내원 로봇</Name>
<Dialogue>죄송합니다, 저희는 규정대로 처리하였습니다</Dialogue>
</HappyEnding>
<HappyEnding>
<ID>13</ID>
<Name>안내원 로봇</Name>
<Dialogue>민원창구로 가서 보상절차를 밟아주시길 바랍니다</Dialogue>
</HappyEnding>
<HappyEnding>
<ID>14</ID>
<Name>해미누리</Name>
<Dialogue>똑같은 말 그만..!</Dialogue>
</HappyEnding>
<HappyEnding>
<ID>15</ID>
<Name>새미누리</Name>
<Dialogue>해미누리야... 이제 괜찮아...</Dialogue>
</HappyEnding>
<HappyEnding>
<ID>16</ID>
<Name></Name>
<Dialogue>해미누리는 익숙한 목소리에 고개를 돌렸다</Dialogue>
</HappyEnding>
<HappyEnding>
<ID>17</ID>
<Name>해미누리</Name>
<Dialogue>언니..?</Dialogue>
</HappyEnding>
<HappyEnding>
<ID>18</ID>
<Name></Name>
<Dialogue>-끝-</Dialogue>
</HappyEnding>
<!--꿈-->
<!--1번째-->
<Dream1>
<ID>1</ID>
<Name></Name>
<Dialogue>새미누리가 태어난지 1160일</Dialogue>
</Dream1>
<Dream1>
<ID>2</ID>
<Name></Name>
<Dialogue>구름이 가득 찬 공중도시</Dialogue>
</Dream1>
<Dream1>
<ID>3</ID>
<Name></Name>
<Dialogue>새미누리와 해미누리는 같은 남매다</Dialogue>
</Dream1>
<Dream1>
<ID>4</ID>
<Name></Name>
<Dialogue>그들은 홀로그램에 띄워진 글자들을 익히고 있다</Dialogue>
</Dream1>
<Dream1>
<ID>5</ID>
<Name>새미누리</Name>
<Dialogue>가... 나... 다...</Dialogue>
</Dream1>
<!--2번째-->
<Dream2>
<ID>1</ID>
<Name></Name>
<Dialogue>새미누리가 태어난지 1480일</Dialogue>
</Dream2>
<Dream2>
<ID>2</ID>
<Name></Name>
<Dialogue>구름이 가득찬 공중도시</Dialogue>
</Dream2>
<Dream2>
<ID>3</ID>
<Name></Name>
<Dialogue>어느날 어머니는 새미누리에게 당부했다</Dialogue>
</Dream2>
<Dream2>
<ID>4</ID>
<Name></Name>
<Dialogue>당신이 나갔다 올 동안 동생인 해미누리를 잘 보살피라고 했다</Dialogue>
</Dream2>
<Dream2>
<ID>5</ID>
<Name></Name>
<Dialogue>그 다음날 어머니는 오지 않았다</Dialogue>
</Dream2>
<Dream2>
<ID>6</ID>
<Name></Name>
<Dialogue>새미누리는 배가 고파 해미누리의 이유식을 먹었다</Dialogue>
</Dream2>
<Dream2>
<ID>7</ID>
<Name></Name>
<Dialogue>그 다음날 어머니가 돌아 오셨다</Dialogue>
</Dream2>
<Dream2>
<ID>8</ID>
<Name></Name>
<Dialogue>어머니는 그날 남에게 의지하는 삶을 살지 말라고 가르쳐주셨다</Dialogue>
</Dream2>
<!--3번째-->
<Dream3>
<ID>1</ID>
<Name></Name>
<Dialogue>새미누리가 태어난지 1640일</Dialogue>
</Dream3>
<Dream3>
<ID>2</ID>
<Name></Name>
<Dialogue>금성위 구름이 가득찬 공중도시</Dialogue>
</Dream3>
<Dream3>
<ID>3</ID>
<Name></Name>
<Dialogue>새미누리와 해미누리는 배우는 것을 좋아했다</Dialogue>
</Dream3>
<Dream3>
<ID>4</ID>
<Name></Name>
<Dialogue>이번에 배운 내용은 태양계 행성이였다</Dialogue>
</Dream3>
<Dream3>
<ID>5</ID>
<Name></Name>
<Dialogue>수성, 금성, 지구, 화성, 세레스, 목성,</Dialogue>
</Dream3>
<Dream3>
<ID>6</ID>
<Name></Name>
<Dialogue>토왕성, 천왕성, 명왕성, 하우메아</Dialogue>
</Dream3>
<Dream3>
<ID>7</ID>
<Name></Name>
<Dialogue>마케마케, 에리스, 콰오아, 세드나</Dialogue>
</Dream3>
<!--4번째-->
<Dream4>
<ID>1</ID>
<Name></Name>
<Dialogue>새미누리가 태어난지 5년</Dialogue>
</Dream4>
<Dream4>
<ID>2</ID>
<Name></Name>
<Dialogue>새미누리의 시간이 5바퀴를 돌았다</Dialogue>
</Dream4>
<Dream4>
<ID>3</ID>
<Name></Name>
<Dialogue>해미누리도 새미누리와 생일이 같았다</Dialogue>
</Dream4>
<Dream4>
<ID>4</ID>
<Name></Name>
<Dialogue>해미누리의 시간은 3바퀴를 돌았다</Dialogue>
</Dream4>
<Dream4>
<ID>5</ID>
<Name></Name>
<Dialogue>어머니께서 생일잔치를 열어주셨다</Dialogue>
</Dream4>
<Dream4>
<ID>6</ID>
<Name>새미누리</Name>
<Dialogue>생일 축하 합니다~ 생일 축하 합니다~</Dialogue>
</Dream4>
<Dream4>
<ID>7</ID>
<Name>새미누리</Name>
<Dialogue>사랑하는...</Dialogue>
</Dream4>
<Dream4>
<ID>8</ID>
<Name></Name>
<Dialogue>누구를 불러야하지?</Dialogue>
</Dream4>
<!--5번째-->
<Dream5>
<ID>1</ID>
<Name></Name>
<Dialogue>새미누리가 태어난지 1960일</Dialogue>
</Dream5>
<Dream5>
<ID>2</ID>
<Name></Name>
<Dialogue>금성 위 구름이 가득찬 공중도시</Dialogue>
</Dream5>
<Dream5>
<ID>3</ID>
<Name></Name>
<Dialogue>새미누리는 옥상 위에 있는 망원경을 잡았다</Dialogue>
</Dream5>
<Dream5>
<ID>4</ID>
<Name></Name>
<Dialogue>하늘에는 초록과 파랑빛이 섞인 지구가 아름답게 떠 있었다</Dialogue>
</Dream5>
<Dream5>
<ID>5</ID>
<Name></Name>
<Dialogue>새미누리는 그 옆에 새하얀 달도 바라보았다</Dialogue>
</Dream5>
<Dream5>
<ID>6</ID>
<Name></Name>
<Dialogue>그녀에게는 다 너무 작았다</Dialogue>
</Dream5>
<!--6번째-->
<Dream6>
<ID>1</ID>
<Name></Name>
<Dialogue>새미누리가 태어난지 2280일</Dialogue>
</Dream6>
<Dream6>
<ID>2</ID>
<Name></Name>
<Dialogue>금성에서 경도 23크레딧 위도 03크레딧에 위치한 도시</Dialogue>
</Dream6>
<Dream6>
<ID>3</ID>
<Name>새미누리</Name>
<Dialogue>자, 이게 드론이라는 거야</Dialogue>
</Dream6>
<Dream6>
<ID>4</ID>
<Name>해미누리</Name>
<Dialogue>외계인 같다</Dialogue>
</Dream6>
<Dream6>
<ID>5</ID>
<Name>새미누리</Name>
<Dialogue>유로파나 타이탄이나 엔셀라듀스의 어떤 생물체도 안 닮았는데?</Dialogue>
</Dream6>
<Dream6>
<ID>6</ID>
<Name></Name>
<Dialogue>해미누리는 스마트폰을 켜서 사진을 보여줬다</Dialogue>
</Dream6>
<Dream6>
<ID>7</ID>
<Name>해미누리</Name>
<Dialogue>태양계 밖 외계인이라...</Dialogue>
</Dream6>
<Dream6>
<ID>8</ID>
<Name>새미누리</Name>
<Dialogue>스마트폰으로 이상한 거 보지 말라고 했잖아</Dialogue>
</Dream6>
<Dream6>
<ID>9</ID>
<Name>해미누리</Name>
<Dialogue>재밌잖아, 같이 보자</Dialogue>
</Dream6>
<!--7번째-->
<Dream7>
<ID>1</ID>
<Name></Name>
<Dialogue>새미누리가 태어난지 2600일</Dialogue>
</Dream7>
<Dream7>
<ID>2</ID>
<Name></Name>
<Dialogue>금성 저궤도 우주정거장</Dialogue>
</Dream7>
<Dream7>
<ID>3</ID>
<Name>새미누리</Name>
<Dialogue>우주승강기 타고 어디 가는지 알지, 해미야?</Dialogue>
</Dream7>
<Dream7>
<ID>4</ID>
<Name>해미누리</Name>
<Dialogue>금성의 위성에 간다고 했잖아</Dialogue>
</Dream7>
<Dream7>
<ID>5</ID>
<Name>새미누리</Name>
<Dialogue>어... 그랬나?</Dialogue>
</Dream7>
<Dream7>
<ID>6</ID>
<Name>해미누리</Name>
<Dialogue>여기 우주선의 종착점에 가면 알 수 있을 꺼야</Dialogue>
</Dream7>
<Dream7>
<ID>7</ID>
<Name>새미누리</Name>
<Dialogue>그런거 없어</Dialogue>
</Dream7>
<Dream7>
<ID>8</ID>
<Name>해미누리</Name>
<Dialogue>그럼 우리 어디 가는거야?</Dialogue>
</Dream7>
<Dream7>
<ID>9</ID>
<Name>새미누리</Name>
<Dialogue>어, 어라?</Dialogue>
</Dream7>
<Dream7>
<ID>10</ID>
<Name></Name>
<Dialogue>어느순간 우주승강기가 목적지에 도착했다</Dialogue>
</Dream7>
<Dream7>
<ID>11</ID>
<Name>새미누리</Name>
<Dialogue>도착?</Dialogue>
</Dream7>
<Dream7>
<ID>12</ID>
<Name>해미누리</Name>
<Dialogue>우와, 사람들이 건물을 공중에 띄워났어</Dialogue>
</Dream7>
<Dream7>
<ID>12</ID>
<Name>새미누리</Name>
<Dialogue>와 진짜 아름답다</Dialogue>
</Dream7>
<!--8번째-->
<Dream8>
<ID>1</ID>
<Name></Name>
<Dialogue>새미누리가 태어난지 2760일</Dialogue>
</Dream8>
<Dream8>
<ID>2</ID>
<Name></Name>
<Dialogue>새미누리와 해미누리는 가장 오래된 도시로 여행을 왔다</Dialogue>
</Dream8>
<Dream8>
<ID>3</ID>
<Name>해미누리</Name>
<Dialogue>언니, 지구에서 가장 오래된 도시가 어디일까?</Dialogue>
</Dream8>
<!--9번째-->
<Dream9>
<ID>1</ID>
<Name></Name>
<Dialogue>새미누리가 태어난지 7880일</Dialogue>
</Dream9>
<Dream9>
<ID>2</ID>
<Name></Name>
<Dialogue>금성제1종합대학교</Dialogue>
</Dream9>
<Dream9>
<ID>3</ID>
<Name>새미누리</Name>
<Dialogue>해미야 수고했어, 학사 취득했어</Dialogue>
</Dream9>
<Dream9>
<ID>3</ID>
<Name>해미누리</Name>
<Dialogue>언니 축하해! 고생했어!</Dialogue>
</Dream9>
<Dream9>
<ID>4</ID>
<Name>해미누리</Name>
<Dialogue>어머니가 옆에 있으셨다면 좋았을텐데...</Dialogue>
</Dream9>
<Dream9>
<ID>5</ID>
<Name>새미누리</Name>
<Dialogue>어머니가 옆에 있으셨다면 뭐라고 하셨을까?</Dialogue>
</Dream9>
<Dream9>
<ID>6</ID>
<Name>해미누리</Name>
<Dialogue>근데 이제 우리 뭐해?</Dialogue>
</Dream9>
<Dream9>
<ID>7</ID>
<Name>새미누리</Name>
<Dialogue>아, 학교에서 지금 정부가 태양계 개발 산업이 진행중이란걸 들었어</Dialogue>
</Dream9>
<Dream9>
<ID>8</ID>
<Name>해미누리</Name>
<Dialogue>웅?</Dialogue>
</Dream9>
<Dream9>
<ID>9</ID>
<Name>새미누리</Name>
<Dialogue>물자를 수송해줄 인력들을 구한다고 했어</Dialogue>
</Dream9>
<Dream9>
<ID>10</ID>
<Name>새미누리</Name>
<Dialogue>우리가 거기서 일하는 건 어때?</Dialogue>
</Dream9>
<Dream9>
<ID>11</ID>
<Name>새미누리</Name>
<Dialogue>우주함선 비행사가 되는거야! 우리의 오랜 꿈이였잖아!</Dialogue>
</Dream9>
<Dream9>
<ID>12</ID>
<Name>새미누리</Name>
<Dialogue>게다가 유로파에서 우주함선을 무상 제공해준다고 들었어</Dialogue>
</Dream9>
<Dream9>
<ID>13</ID>
<Name>해미누리</Name>
<Dialogue>좋은 생각인데? 당장 유로파로 떠나자!</Dialogue>
</Dream9>
<!--10번째-->
<Dream10>
<ID>1</ID>
<Name></Name>
<Dialogue>새미누리가 태어난지 8353일</Dialogue>
</Dream10>
<Dream10>
<ID>2</ID>
<Name></Name>
<Dialogue>금성중궤도 우주항구</Dialogue>
</Dream10>
<Dream10>
<ID>3</ID>
<Name></Name>
<Dialogue>새미누리와 해미누리는 부푼 꿈을 안고 항구에서 탑승준비를 했다</Dialogue>
</Dream10>
<Dream10>
<ID>4</ID>
<Name>해미누리</Name>
<Dialogue>앞으로 어떤 일이 펼쳐지게 될까?</Dialogue>
</Dream10>
<Dream10>
<ID>5</ID>
<Name>새미누리</Name>
<Dialogue>이제 이곳은 추억 속의 행성이 되겠네</Dialogue>
</Dream10>
<Dream10>
<ID>6</ID>
<Name>해미누리</Name>
<Dialogue>자, 이제 슬슬 탑승할까?</Dialogue>
</Dream10>
<Dream10>
<ID>7</ID>
<Name>새미누리</Name>
<Dialogue>그래, 가자!</Dialogue>
</Dream10>
<!--11번째-->
<Dream11>
<ID>1</ID>
<Name></Name>
<Dialogue>새미누리가 태어난지 8355일</Dialogue>
</Dream11>
<Dream11>
<ID>2</ID>
<Name></Name>
<Dialogue>금성에서 유로파로 가는 우주함선 안, 세레스 스윙바이 준비 중</Dialogue>
</Dream11>
<Dream11>
<ID>3</ID>
<Name></Name>
<Dialogue>새미누리와 해미누리는 식사를 하고 있다</Dialogue>
</Dream11>
<Dream11>
<ID>4</ID>
<Name>새미누리</Name>
<Dialogue>창 밖을 봐, 별들이 수놓아져 있어</Dialogue>
</Dream11>
<Dream11>
<ID>5</ID>
<Name>해미누리</Name>
<Dialogue>진짜 많다, 근데 별들은 왜 하얀색 밖에 없어?</Dialogue>
</Dream11>
<Dream11>
<ID>6</ID>
<Name>새미누리</Name>
<Dialogue>별들이 너무 밝아서 그래, 별이 존재하는 곳 까지 가보면 각각 별들의 색이 있어</Dialogue>
</Dream11>
<Dream11>
<ID>7</ID>
<Name>해미누리</Name>
<Dialogue>헤헤 그렇구나, 그럼 저 별들에 사는 사람들은 태양의 색을 궁금해 할까?</Dialogue>
</Dream11>
<Dream11>
<ID>8</ID>
<Name>새미누리</Name>
<Dialogue>재미있는 생각이네, 앞으로도 우리 이렇게 행복하게 살았으면 좋겠어</Dialogue>
</Dream11>
<Dream11>
<ID>9</ID>
<Name></Name>
<Dialogue>둘은 식사를 마치고 함선 가운데의 큰 정원을 산책했다</Dialogue>
</Dream11>
<Dream11>
<ID>10</ID>
<Name></Name>
<Dialogue>그 순간이 너무 평화로워서 새미누리는 시간을 멈추고 싶었다</Dialogue>
</Dream11>
<Dream11>
<ID>11</ID>
<Name></Name>
<Dialogue>그러나...</Dialogue>
</Dream11>
<Dream11>
<ID>12</ID>
<Name>해미누리</Name>
<Dialogue>악!</Dialogue>
</Dream11>
<Dream11>
<ID>13</ID>
<Name></Name>
<Dialogue>공원의 장식물들이 덜덜덜 떨리더니 조명들이 꺼지기 시작했다</Dialogue>
</Dream11>
<Dream11>
<ID>14</ID>
<Name>새미누리</Name>
<Dialogue>지진인가..?</Dialogue>
</Dream11>
<Dream11>
<ID>15</ID>
<Name></Name>
<Dialogue>그때 긴급방송이 울려왔다</Dialogue>
</Dream11>
<Dream11>
<ID>16</ID>
<Name></Name>
<Dialogue>우주해적이 침입해 왔으니, 즉시 대피선으로 이동하라고</Dialogue>
</Dream11>
<Dream11>
<ID>17</ID>
<Name></Name>
<Dialogue>하지만 어디로 대피해야할지 감이 안온다</Dialogue>
</Dream11>
<Dream11>
<ID>18</ID>
<Name></Name>
<Dialogue>게다가 곳곳에서 연기가 피어올라 사방이 자욱해졌다</Dialogue>
</Dream11>
<Dream11>
<ID>19</ID>
<Name></Name>
<Dialogue>새미누리는 목 터져라 해미누리를 찾아 다니다 본체의 조정실에 다다랐다</Dialogue>
</Dream11>
<Dream11>
<ID>20</ID>
<Name></Name>
<Dialogue>새미누리는 구조선으로 가는 대신 우주선을 직접 조종하기로 했다</Dialogue>
</Dream11>
<Dream11>
<ID>21</ID>
<Name></Name>
<Dialogue>새미누리는 남아있는 연료를 확인했다</Dialogue>
</Dream11>
<Dream11>
<ID>22</ID>
<Name></Name>
<Dialogue>유로파까지 다시 추진할 연료는 없을 꺼 같고, 우주해적을 막아줄 세레스로 간다</Dialogue>
</Dream11>
<Dream11>
<ID>23</ID>
<Name></Name>
<Dialogue>뒤쪽 엔진을 끄고 앞쪽엔진을 켜서 세레스로 향하는 궤도를 만든다</Dialogue>
</Dream11>
<Dream11>
<ID>24</ID>
<Name></Name>
<Dialogue>우주해적이 따라온다면 세레스의 방위체가 우주함선을 저격할 것이다</Dialogue>
</Dream11>
<Dream11>
<ID>25</ID>
<Name></Name>
<Dialogue>새미누리는 조종바를 잡고 속도를 감축하고 다시 올렸다</Dialogue>
</Dream11>
<Dream11>
<ID>26</ID>
<Name></Name>
<Dialogue>실제로 운전해 본 건 처음이였지만 성공적이였다</Dialogue>
</Dream11>
<Dream11>
<ID>27</ID>
<Name></Name>
<Dialogue>새미누리는 무사히 세레스의 우주정거장에 도킹하였다</Dialogue>
</Dream11>
<Dream11>
<ID>28</ID>
<Name></Name>
<Dialogue>새미누리는 게이트를 통과하자마자 쓰러져 병원으로 실려갔다</Dialogue>
</Dream11>
<Dream11>
<ID>29</ID>
<Name></Name>
<Dialogue>이후 새미누리는 해당 사건에 조사를 받았다</Dialogue>
</Dream11>
<Dream11>
<ID>30</ID>
<Name></Name>
<Dialogue>다른사람의 함선을 빼돌려 무단으로 조종한것은 처벌 받지 않았지만, 유로파로 보내주지 못한다고 한다</Dialogue>
</Dream11>
<Dream11>
<ID>31</ID>
<Name></Name>
<Dialogue>새미누리는 울고 싶었다</Dialogue>
</Dream11>
<Dream11>
<ID>32</ID>
<Name></Name>
<Dialogue>새미누리는 창문너머로 분해되는 우주선을 멍하니 바라봤다</Dialogue>
</Dream11>
<Dream11>
<ID>33</ID>
<Name></Name>
<Dialogue>새미누리는 유로파로 갈 날을 기다리며, 셋방을 구하고 일자리를 구했다</Dialogue>
</Dream11>
<!--12번째-->
<Dream12>
<ID>1</ID>
<Name></Name>
<Dialogue>새미누리가 태어난지 100000일</Dialogue>
</Dream12>
<Dream12>
<ID>2</ID>
<Name></Name>
<Dialogue>세레스 고궤도 우주거주구 4A-28B</Dialogue>
</Dream12>
<Dream12>
<ID>3</ID>
<Name></Name>
<Dialogue>새미누리는 100000일 째 날을 기념도 못하고 있다</Dialogue>
</Dream12>
<Dream12>
<ID>4</ID>
<Name></Name>
<Dialogue>새미누리는 배가고파 어지럽다</Dialogue>
</Dream12>
<Dream12>
<ID>5</ID>
<Name></Name>
<Dialogue>점점 기억이 흐릿해져간다</Dialogue>
</Dream12>
<Dream12>
<ID>6</ID>
<Name></Name>
<Dialogue>그때였다...</Dialogue>
</Dream12>
<Dream12>
<ID>7</ID>
<Name></Name>
<Dialogue>피를 팔아 돈을 벌 수 있다는 소식을 들었을 때,</Dialogue>
</Dream12>
<Dream12>
<ID>8</ID>
<Name></Name>
<Dialogue>새미누리는 피를 뽑으러 혈액관리소로 갔다</Dialogue>
</Dream12>
<Dream12>
<ID>9</ID>
<Name></Name>
<Dialogue>그 뒤 바로 새미누리의 통장에 5000크레딧이 들어왔다</Dialogue>
</Dream12>
<Dream12>
<ID>10</ID>
<Name></Name>
<Dialogue>그게 이 이야기의 시작일 것이다</Dialogue>
</Dream12>
<DreamEnd>
<ID></ID>
<Name></Name>
<Dialogue>이제 새미누리는 더 이상 꿀 꿈이 없다</Dialogue>
</DreamEnd>
<!--배드엔딩-->
<!--HP-->
<DeadEnding_HP>
<ID>1</ID>
<Name></Name>
<Dialogue>새미누리는 점점 몸이 허약해진 나머지 눈을 감았다</Dialogue>
</DeadEnding_HP>
<DeadEnding_HP>
<ID>2</ID>
<Name></Name>
<Dialogue>아무도 그녀를 추모하지 않았고,</Dialogue>
</DeadEnding_HP>
<DeadEnding_HP>
<ID>3</ID>
<Name></Name>
<Dialogue>세레스가 7번 자전한 뒤에 핵융합으로 우주먼지가 되어 사라졌다</Dialogue>
</DeadEnding_HP>
<DeadEnding_HP>
<ID>4</ID>
<Name></Name>
<Dialogue>그녀가 컴퓨터에 적어둔 여러 망상들은 유언이 되어 유로파로 보내지게 되었다</Dialogue>
</DeadEnding_HP>
<DeadEnding_HP>
<ID>5</ID>
<Name></Name>
<Dialogue>아마 유로파에 살고 있는 누군가가 받아갈 것 같다</Dialogue>
</DeadEnding_HP>
<DeadEnding_HP>
<ID>6</ID>
<Name></Name>
<Dialogue>-끝-</Dialogue>
</DeadEnding_HP>
<!--Blood-->
<DeadEnding_Blood>
<ID>1</ID>
<Name></Name>
<Dialogue>새미누리는 머리가 점점 어지러워졌다</Dialogue>
</DeadEnding_Blood>
<DeadEnding_Blood>
<ID>2</ID>
<Name></Name>
<Dialogue>돈 욕심에 무리하게 피를 뽑다가 일어난 일이다</Dialogue>
</DeadEnding_Blood>
<DeadEnding_Blood>
<ID>3</ID>
<Name></Name>
<Dialogue>새미누리는 천천히 눈을 감았다</Dialogue>
</DeadEnding_Blood>
<DeadEnding_Blood>
<ID>4</ID>
<Name></Name>
<Dialogue>-끝-</Dialogue>
</DeadEnding_Blood>
<!--Hunger-->
<DeadEnding_Hunger>
<ID>1</ID>
<Name>새미누리</Name>
<Dialogue>아... 배고파...</Dialogue>
</DeadEnding_Hunger>
<DeadEnding_Hunger>
<ID>2</ID>
<Name>새미누리</Name>
<Dialogue>해미는 잘 살고 있으려나...</Dialogue>
</DeadEnding_Hunger>
<DeadEnding_Hunger>
<ID>3</ID>
<Name>새미누리</Name>
<Dialogue>나... 잘 살아 온걸까..?</Dialogue>
</DeadEnding_Hunger>
<DeadEnding_Hunger>
<ID>4</ID>
<Name></Name>
<Dialogue>새미누리는 천천히 눈을 감았다</Dialogue>
</DeadEnding_Hunger>
</dataroot>
⬆필요한 대사를 xml 파일로 정리
불러오고 싶은 상황을 이름을 붙여 묶어 논다
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Xml;
using UnityEngine.UI;
[System.Serializable]
public class StringSprite : SerializableDictionary<string, Sprite> { }
public class XML_Parse : MonoBehaviour
{
int _DialogueCount = 0; //받아오는 카운트
Dialogue dialogue;
//0: 해미누리
//1: 새미누리
[SerializeField]
Sprite[] characterImgs;
void Awake()
{
}
public Dialogue LoadXML(string _storyFile)
{
TextAsset txtAsset = (TextAsset)Resources.Load("XML/Dialogue");
_DialogueCount = -1;
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(txtAsset.text);
XmlNodeList all_nodes = xmlDoc.SelectNodes("dataroot/" + _storyFile);
dialogue = new Dialogue(new string[all_nodes.Count], new string[all_nodes.Count],new Sprite[all_nodes.Count]);
dialogue.sentences = new string[all_nodes.Count];
foreach (XmlNode node in all_nodes)
{
dialogue.sentences[++_DialogueCount] = node.SelectSingleNode("Dialogue").InnerText;
SetName(node);
SetImage(node);
}
return dialogue;
}
private void SetName(XmlNode node)
{
var name = node.SelectSingleNode("Name").InnerText;
dialogue.names[_DialogueCount] = name;
}
private void SetImage(XmlNode node)
{
var name = node.SelectSingleNode("Name").InnerText;
switch (name)
{
case "새미누리":
dialogue.img[_DialogueCount] = characterImgs[0];
break;
case "해미누리":
dialogue.img[_DialogueCount] = characterImgs[1];
break;
default:
dialogue.img[_DialogueCount] = null;
break;
}
}
}
⬆아까 말했던 xml 대사의 이름에 접근해서 출력한다
처음으로 xml 파일을 유니티에서 사용해 보았다
엑셀이나 Json 파일로 시도해봤지만 게임 특성 상 특정 상황에서 나오는 대사들이 정해져 있고, 서로 다른 캐릭터들이 주고 받는 대사가 많았기 때문에 xml 파일이 가장 유용했다
선배한테 코드 설명을 듣고 단순히 대사나 이름뿐 아니라 캐릭터의 이미지나 대사들이 나오는 애니메이션 등 여러 기능을 추가하였다
const express = require('express');
const passport = require('passport');
const session = require('express-session')
const MongoClient = require('mongodb').MongoClient;
const bodyparser = require('body-parser');
const app = express();
app.set('view engine','ejs');
app.use(express.urlencoded({extended: true}))
app.use(session(
{
secret:'Mysecret', //쿠키에 서명을 추가하는 옵션
resave: false, //모든 request마다 기존에 있던 session이 변경사항이 없어도 다시 저장할지 설정하는 옵션
saveUninitialized: true //세선에 저장할게 없더라도 처음부터 세션을 설정할것인가 결정하는 옵션
}));
let db;
let id;
let pw;
MongoClient.connect('mongodb+srv://ksg:kimsunggil2005!@cluster0.u4ppd.mongodb.net/myFirstDatabase?retryWrites=true&w=majority', { useUnifiedTopology: true }, function (에러, client) {
if (에러) return console.log(에러)
db = client.db('todologin');
// db.collection('login').insertOne( {이름 : 'John', _id : 100} , function(에러, 결과){
// console.log('저장완료');
// });
const ip = '192.168.0.109'
app.listen(3000, ip, function () {
console.log('서버 가동중');
});
});
app.get('/',(req,res)=>{
res.send('서버');
})
app.get('/sign_up',(req,res)=>{
res.render("sign_up.ejs")
})
app.get('/login',(req,res)=>{
res.render('login.ejs');
})
app.post('/sign_up',(req,res)=>{
id = req.body.id;
pw = req.body.pw;
console.log(req.body);
console.log(id);
console.log(pw);
db.collection('login').insertOne( {id : req.body.id, pw : req.body.pw }, (err, result) => {
console.log("저장완료");
res.send('서버');
})
})
app.post('/login',(req,res)=>{
if(req.body.id === id){
if(req.body.pw === pw){
res.send("로그인 성공!!");
}
}
})
⬆node.js 를 이용하여 성길
이가 로그인 서버를 구현했다
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.Data;
using UnityEngine.Networking;
public class Server : MonoBehaviour
{
string url = "http://192.168.0.109:3000/";
[SerializeField] InputField idInput;
[SerializeField] InputField pwInput;
[SerializeField] GameObject logInImg;
[SerializeField] GameObject successImg;
[SerializeField] Text successText;
private string id;
private string pw;
void Start()
{
}
public void Login()
{
url += "login";
Input(idInput.text,pwInput.text);
StartCoroutine(WebRequest(id,pw));
}
public void Sign_Up()
{
url += "sign_up";
Input(idInput.text, pwInput.text);
StartCoroutine(WebRequest(id,pw));
}
public void Input(string id, string pw)
{
this.id = id;
this.pw = pw;
}
IEnumerator WebRequest(string id, string pw)
{
UnityWebRequest request = new UnityWebRequest();
WWWForm form = new WWWForm();
form.AddField("id", id);
form.AddField("pw", pw);
using (request = UnityWebRequest.Post(url, form))
{
yield return request.SendWebRequest();
if (request.isNetworkError)
{
successText.text = "실패 했습니다";
Debug.Log(request.error);
}
else
{
successText.text = "성공했습니다";
Debug.Log("<post>" + request.downloadHandler.text + "</post>");
}
successImg.SetActive(true);
}
endRequest();
}
public void OnClick()
{
successImg.SetActive(false);
logInImg.SetActive(false);
}
public void ShowOnClick()
{
logInImg.SetActive(true);
}
void endRequest()
{
url = "http://192.168.0.109:3000/";
}
}
⬆구글링과 선배들의 도움을 받아 서버의 기본 개념을 이해하고, 유니티와 연결했다
서버 연결은 엄청 어려울 줄 알았는데 선배의 도움으로 원리를 이해하니까 쉬웠다
구글에서 나온 서버코드와 내가 받은 서버코드가 달라, 먼저 원리를 이해하고 나의 프로젝트의 맞게 코드를 수정했다
지금 서버쪽에서 url을 고정할 수 없어서 서버와 플레이하는 사람의 와이파이가 같아야하고, 서버주소가 바뀌면 연결이 안된다는 단점이 있지만, 그래도 연결 했다는 사실에 의의를 두기로 했다
선택지 관리는 이 프로젝트 에서 2번재로 중요했다
플레이어는 매번 5개의 선택지를 고를 수 있었는데 선택지마다 공통점과 차이점을 생각해보았다
결국, 장소 하나하나 마다 코드를 무작정 짜기 보단, 상속을 이용해서 체계적으로 관리 하기로 하였다
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MovePlace : MonoBehaviour
{
public Player player => SystemManager.Instance.Player;
public virtual void Move()
{
SystemManager.Instance.DialogueShow.SentanceCount = 0;
}
public virtual void GoOut()
{
}
}
⬆모든 선택지의 원본이 되는 MovePlace.cs
이다
플레이어의 변수들을 가지고 있고, 선택을 했을 때 일어날 일들이 들어갈 함수와, 정해진 일들을 다 수행하고 메인화면으로 돌아갈때의 함수가 존재한다
한번 틀을 잡아두니까 5개의 선택지와 관련한 코드를 작성할 때 훨씬 효율적으로 코드를 짤 수 있었다
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
public class Park : MovePlace
{
[SerializeField]
GameObject CardBar;
[SerializeField]
GameObject CardBtn;
[SerializeField]
TMP_Text[] numText;
[SerializeField] AudioSource parkSound;
[SerializeField] AudioSource cardSound;
int[] nums;
void Awake()
{
nums = new int[3] { 0,0,0};
}
void Start()
{
CardBar.SetActive(false);
CardBtn.SetActive(false);
}
public override void Move()
{
base.Move();
parkSound.Play();
SystemManager.Instance.Bloodshop.isDreaming = false;
CardBtn.SetActive(true);
}
public override void GoOut()
{
base.GoOut();
parkSound.Stop();
CardBtn.SetActive(false);
CardBar.SetActive(false);
}
public void OnClick()
{
if (player.Money < 100)
{
SystemManager.Instance.DialogueShow.StartDialogue("NoMoney");
return;
}
player.Money -= 100;
CardBar.SetActive(true);
for (int i = 0; i < numText.Length; i++)
{
cardSound.Play();
nums[i] = Random.Range(1, 10);
numText[i].text = nums[i].ToString();
}
//결과 출력
GameResults();
CardBtn.SetActive(false);
}
void GameResults()
{
SystemManager.Instance.DialogueShow.SentanceCount = 0;
//if문을 이용해서 결과를 출력
if (nums[0] == nums[1] && nums[0] == nums[2])
{
SystemManager.Instance.DialogueShow.StartDialogue("Winning");
player.Money += 9744;
}
else{
SystemManager.Instance.DialogueShow.StartDialogue("Loseing");
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Bloodshop : MovePlace
{
public bool isBloodshop;
public bool isDreaming;
[SerializeField] AudioSource moveBloodSound;
public override void Move()
{
base.Move();
moveBloodSound.Play();
isBloodshop = true;
SystemManager.Instance.House.isHouse = false;
}
public override void GoOut()
{
base.GoOut();
moveBloodSound.Stop();
}
public void BloodCheck()
{
if (player.Blood >= 500 && player.HP >= 3)
{
player.Blood -= 500;
player.Money += 5000;
player.HP -= 2;
SystemManager.Instance.DialogueShow.StartDialogue("GoodBlood");
}
else
{
SystemManager.Instance.DialogueShow.StartDialogue("BadBlood");
}
isBloodshop = false;
isDreaming = true;
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Spaceport : MovePlace
{
[SerializeField]
GameObject buyBtn;
[SerializeField] AudioSource spaceportSound;
void Start()
{
buyBtn.SetActive(false);
}
public override void Move()
{
spaceportSound.Play();
base.Move();
SystemManager.Instance.Bloodshop.isDreaming = false;
buyBtn.SetActive(true);
}
public override void GoOut()
{
base.GoOut();
spaceportSound.Stop();
buyBtn.SetActive(false);
}
public void OnClick()
{
if (player.Money < 35000000)
{
SystemManager.Instance.DialogueShow.StartDialogue("NoMoney");
return;
}
else
{
buyBtn.SetActive(false);
//해피엔딩
SystemManager.Instance.Ending.EndingDialogue("HappyEnding");
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class House : MovePlace
{
public bool isHouse;
[SerializeField]
AudioSource houseSound;
[SerializeField] AudioSource dreamSound;
public override void Move()
{
isHouse = true;
houseSound.Play();
base.Move();
Sleep();
}
public override void GoOut()
{
houseSound.Stop();
dreamSound.Stop();
base.GoOut();
}
//잠을 자고 체력 회복
void Sleep()
{
if (player.Hunger >= 5)
player.HP += 3;
else
player.HP += 1;
player.Blood += 17;
player.Hunger -= 2;
}
//꿈을 꾼다
public void DreamCheck()
{
houseSound.Stop();
player.Dream++;
SystemManager.Instance.DialogueTrigger.ChangeBG(5);
dreamSound.Play();
if (player.Dream > 20)
{
SystemManager.Instance.DialogueShow.StartDialogue("DreamEnd");
}
SystemManager.Instance.DialogueShow.StartDialogue("Dream" + SystemManager.Instance.Player.Dream);
isHouse = false;
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Market : MovePlace
{
[SerializeField]
GameObject productsBar;
[SerializeField] AudioSource marketSound;
void Start()
{
//게임을 시작할 때는 상품 바 가리기
productsBar.SetActive(false);
}
public override void Move()
{
base.Move();
marketSound.Play();
SystemManager.Instance.Bloodshop.isDreaming = false;
productsBar.SetActive(true);
}
public override void GoOut()
{
productsBar.SetActive(false);
marketSound.Stop();
}
}
⬆ MovePlace.cs
⬆MovePlace.cs
를 부모로 둔 선택지 코드들이다
이번 프로젝트는 주변 사람들의 도움과 나의 열쩡으로 만들어진 귀중한 놈이다
텍스트 기반의 게임이라 단순할 줄 알았는데 생각보다 신경써야 할껏도 많고 자칫 코드가 복잡해 질 수 도 있었다 그리고 실제로 그랬다
그래도 작품을 포기하지 않고 주어진 시간 이내에 구현 가능하게 만들었다는 것에 난 이미 뿌듯하다
유휴/