내일배움캠프/프로젝트 33

팀 프로젝트 진행 - 멀티플레이 구현

팀원이 제작한 플레이어 오브젝트를 네트워크 오브젝트화 하여 멀티플레이를 구현하였습니다. 캐릭터 생성 로직네트워크 오브젝트를 스폰하기 위한 클래스를 생성해주었습니다.이후 모든 오브젝트의 생성을 이 클래스가 당담할 예정입니다.public class NetworkSpawnController : MonoSingleton{ public Transform profassorSpawnPoint; public Transform studentSpawnPoint; public NetworkObject playerPrefab; protected override void Awake() { Create(); if (Instance != this) { ..

팀프로젝트 진행 - 재시작 문제 해결

호스트와의 연결이 끊길경우, 호스트가 서버를 종료했을경우 클라이언트 플레이어가 로비로 돌아오도록 수정해주었습니다.public class NetworkConnectController : MonoBehaviour{ public NetworkObject networkGameManager; private void Awake() { if (NetworkManager.Singleton.IsHost) { NetworkObject netGameManager = Instantiate(networkGameManager); netGameManager.Spawn(true); } } //게스트 플레이어의 경우, 서버와 연결이..

팀 프로젝트 - Vivox 조작 UI 제작

좌측 하단에 다른 참가자가 입력을 할 경우 이를 시작적으로 표시해 줄 수 있는 HUD UI와, 보이스채팅 음량을 조절할 수 있는 UI를 제작하였습니다. 보이스채팅 채널에 입장할 때, HUD UI를 생성해주는 코드입니다.public class VoiceChatSetter : MonoSingleton{ public List chatList = new List(); public RosterItem hudUiPrefab; public Transform hudParentPosition; protected override void Awake() { Create(); if (Instance != this) { Destroy(gameO..

팀프로젝트 - 프로토타입 로비 완성, Vivox 연동 시작

레디 기능, 방 떠나기 기능, 강퇴기능을 로비에 추가하고, 게임 시작시 Relay를 통해 연결하는 내용까지 구현하여 프로토타입 로비를 완성하였습니다. 위의 사진과 같이 게스트 참여자의 경우 Ready 버튼이 활성화 되며, Ready 버튼을 누를경우 준비가 완료되었다는 뜻으로 체크 이미지가 표기됩니다.호스트의 경우, Ready 버튼 위치에 Kick 버튼이 활성화되며, 이 버튼을 누를경우 참여자가 강퇴되게 됩니다. 또한 호스트 플레이어의 경우 Kick, Ready 버튼이 모두 비활성화 됩니다. 또한 우측 아래 Leave Lobby 버튼을 눌러서 로비에서 나갈 수 있으며 호스트가 로비를 떠날경우 로비 게스트 참여자도 강제로 로비에서 내보내는 방식으로 제작하였습니다.또한 게임 시작 버튼의 경우 모든 참여자가 준..

팀 프로젝트 진행 - 프로토타입 로비 제작

UGS의 Lobby 기능을 사용하여 로비를 생성하고, 방 코드를 입력하여 생성된 로비에 입장할 수 있도록 만들어주었습니다. 먼저 로비기능을 관리하는 클래스입니다.제네릭 싱글톤이 현재 씬을 넘어가는 형태로만 제작되어있기 떄문에, Awake를 재정의하여 씬을 넘어가지 않도록 만들어주었습니다.public class LobbyManager : MonoSingleton{ public TMP_InputField nameInput; public TMP_InputField roomCodeInput; //UI관리용 이벤트 //로비에 참여하면 호출 public event Action OnJoinLobbyEvent; //로비에서 나가면 호출 public event Action OnLea..

팀프로젝트 진행 - UGS 연결

UGS의 Lobby, Relay, Vivox 를 이용하여 멀티플레이를 구현할 예정이기 때문에, 프로젝트에 UGS를 연결하게 되었습니다. UGS 페이지에서 신규 프로젝틀를 등록할 경우 해당 프로젝트의 ID를 발급받을 수 있습니다.이 아이디를 유니티 에디터에 등록하면 UGS에 프로젝트를 연동하여 UGS 시스템을 이용할 수 있습니다. 에디터에서는 Edit - Project Setting - Services 에서 UGS 에 연결 할 수 있습니다.프로젝트를 생성했거나 생성할 조직을 선택한 뒤, Use an existing cloud project 를 선택하면 사전에 만들어준 프로젝트를 선택하여 ID를 등록할 수 있으며Create a new cloud project 를 선택하면 새로운 프로젝트를 생성하여 ID를 발..

개인프로젝트 - 텍스트 RPG : 저장,불러오기 구현

데이터를 저장하고 불러오는 기능을 구현하였습니다. 새로운 클래스 : GameSaveManager게임 저장과 불러오기를 당담하는 클래스 GameSaveManager를 추가하였습니다.아래는 클래스 전체 코드 입니다.더보기internal class GameSaveManager{ private string folderPath; private DirectoryInfo directoryInfo; private string txtPath; private Character charSave; private Shop shopSave; private List saveDataList = new List(); public List SaveDataList { get { return save..

개인프로젝트 - 텍스트 RPG : 휴식하기 구현

골드를 사용하여 체력을 회복하는 휴식기능을 구현하였습니다. Character 클래스 - 회복기능 구현캐릭터 클래스에 체력 회복을 위한 함수를 구현하였습니다.//체력 얻음, 최대치를 넘지 못함public void HealedHealth(float health){ float temp = HealthPoint + health; HealthPoint = (temp > maxHealth) ? maxHealth : temp;}해당 함수는 회복량을 매개변수로 받으며, 최대체력을 넘는 회복을 시도할경우 체력을 최대체력값으로 변경합니다. 메인함수마지막 케이스인 5번을 구현하였습니다.이외의 입력 시도시 default로 처리하여 아무런 행동을 하지 않고 반복문의 시작점으로 돌아갈 예정입니다.case 5: {..

개인프로젝트 - 텍스트RPG : 던전기능 구현

플레이어의 능력치에 따라 체력을 잃고 골드를 획득하는 던전 기능을 구현하였습니다.해당 기능을 구현하면서 체력을 모두 잃으면 게임이 종료되도록 만들어주었습니다. 변경점 - 게임 진행 판정//본 게임while (playerChar.IsAlive){ TextCreater("마을에 오신것을 환영합니다.\n어떤 행동을 할지 선택해주세요.\n\n"); TextCreater("1.상태창\n2.인벤토리\n3.상점\n4.던전입장\n5.휴식하기\n\n"); TextCreater("행동 입력"); input = InputInt(Console.ReadLine());}게임의 순환을 당담하는 while문의 조건이 playerChar의 IsAlive 프로퍼티로 변경되었습니다. 이에따라 해당 프로퍼티와 관련된 ..

개인프로젝트 - 텍스트RPG : 상점 구현

상점 기능을 구현하여 아이템을 사고 파는 기능을 만들어주었습니다.해당 내용 구현을 위해 상점을 당담하는 새로운 클래스 Shop 을 추가하였습니다.Character 클래스 변경점 - 경제관련 함수 추가상점에서 돈을 사용해야하기 때문에, 돈과 관련된 함수가 추가되었습니다.//돈 사용public bool UseGold(int usedGold){ if (PlayerGold 돈을 획득할경우에는 PlayerGold 프로퍼티에 값을 추가하는 기능만을 하지만, 돈을 사용할 경우에는 돈이 충분한지 확인하고 사용해야하기 때문에 매개변수와 현재 소지금을 비교하고, 소지금이 충분한 경우에만 돈이 사용됩니다. 또한 이 함수를 통해서 사용 성공, 실패를 판단할 수 있도록 bool 값을 반환하도록 만들어주었습니다. 아이템 구..