게임 입장

CJB_ny·2022년 6월 27일
0

2D_Project

목록 보기
21/23
post-thumbnail

이렇게만 남겨주고 다 삭제 ㄱㄱ.

패킷 설정

이정도의 패킷 만 만들어놓고 시작을 하도록 하자.

이렇게

프로토 만들어주고

폴더로 가서

배치파일 실행 ㄱㄱ


젠 페킷

이거 .proto 파일 수정하면

배치파일 눌러서 업데이트를 한번 해주도록 하자.

Game Contents

지금 이부분에서 Player에서 GameRoom의 생성자를 프로퍼티로 받아준거 같은데

다른 클래스에서 GameRoom의 생성자를 받아 줄 수가 있나??

생성자 프로퍼티?

PlayerInfo

프로퍼티 = new 연산자

new 연산자가 새로운 객체를 만드는 것인데

PlauerInfo라는 새로은 객체를 만들고

set = value 를 통해 new 연산자를 통한 새로운 객체를 넣어주는 것인거 같다?


Cat cat = new Cat();
여기서 new 뒤에 Cat()은 객체를 생성하는 "생성자"이다.
new는 생성자를 호출해서 객체를 생성하는데 사용하는 "연산자"이다.


spawn

지금 락을 걸어서

enterPacket 만들어서 나의 정보를 보내고

나의 정보 보냈으면 내 주변에 누가 있는지도 알아야 하니까

spawnPacket으로 지금 누가 있는지 나를 제외하고 패킷에 담은 다음에

newPlayer == 입장한 플레이어 한테 해당 패킷을 전송을 해준다.

RoomManager

이렇게 일단을 해주도록 하자.

RoomManager는 모든 룸들을 관리를 하기 때문에.

out, ref 키워드

출처: https://developer-talk.tistory.com/53 [평범한 직장인의 공부 정리:티스토리]

Find부분에서

ref

ref 및 out 키워드는 메서드 또는 함수 내에서 인수를 전달하는 데 사용됩니다. 둘 다 인수 / 매개 변수가 참조로 전달되었음을 나타냅니다. 

ref 키워드는 인수를 참조로 전달하는 데 사용됩니다. 즉, 해당 매개 변수의 값이 메서드에서 변경되면 호출하는 메서드에 반영됩니다. 
ref 키워드를 사용하여 전달 된 인수는 호출된 메서드에 전달되기 전에 호출 메서드에서 초기화되어야 합니다.

특징

매개 변수가 ref로 전달되기 전에 초기화해야 합니다.
호출 메서드로 돌아가기 전에 매개 변수 값을 초기화할 필요는 없습니다.
ref 매개 변수를 통한 값 전달은 호출된 메서드가 전달된 매개 변수의 값을 변경해야 할 때 유용합니다.
ref를 사용하면 데이터를 양방향으로 전달할 수 있습니다.

static void SetValueRef(ref string str)
{
str = "refString";
Console.WriteLine("SetValueRef 메소드에서 값 변경: {0}", str);
}

static void Main(string[] args)
{
string str1 = "initString";
Console.WriteLine("SetValueRef 메소드 호출 전: {0}", str1);
SetValueRef(ref str1);
Console.WriteLine("SetValueRef 메소드 호출 후: {0}\n", str1);
}

out

out 키워드
out 키워드는 ref 키워드와 같은 인수를 전달하는데도 사용되지만 값을 할당하지 않고도 인수를 전달할 수 있습니다. 
out 키워드를 사용하여 전달 된 인수는 호출 메서드로 돌아가기 전에 호출된 메서드에서 초기화되어야 합니다.

TryGetValue에서 두번째 인자로 out을 받은 이유가

초기화를 먼저 하지 않고 roomId에 해당하는 room이 있다면 해당값을 무조건 초기화 해주기 때문인거같다.


Program.cs

프로그램 시작하면 바로

이렇게 Add를 호출 해주도록 하자.

클라세션

나중에 내가 만들어 준 애가 누군지 파악하기 쉽고 관리하기 쉽게하기 위해서

클라세션에도 만들어준 플레이어의 정보를 들고 있도록 해주자.

서버 구동

server프로젝트 실행하고

유니티 Tool -> 2 실행하고

3번째 플레이어는 유니티 실행하면

우리가 작성해준 packetHandler에서 이렇게 로그가 찍힌다.

패킷 만들고 Handler 만들어 주어야함 ❗❗❗

우리가 GameRoomManager, PlayerManager 를 Server에서 다 만들고

패킷도 Proto.proto 에서 만들어서 배치파일 실행해줌.

그리고 클라로 돌아왔을 때, 에러가 나는데

우리가 패킷만 만들어주고 클라에서 패킷들을 어떻게 처리를 해야할지를 안만들어 준것임.

지금 클라에서 이 빨간줄 끄인 부분들의 패킷핸들러 부분들을 다 만들어 주어야한다.

클라의 packetHandler 에서 이렇게 만들어 주자.

그리고 테스트 ㄱㄱ

profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글