C#

유니티 연동 #1

monstro 2025. 1. 28. 16:13
728x90
반응형

이번 포스트에서는 이전에 만든 네트워크 프로그램을 Unity와 연결하여 수행하도록 하겠습니다.

우선 이번 포스트에서는 클라이언트를 만들어보도록 하겠습니다.

 

유니티 에디터에서 클라이언트 프로젝트를 하나 생성하고 

필요한 스크립트를 가져오겠습니다.

 

1) 서버 - 클라이언트 공용으로 사용하는 스크립트

 

공용으로 사용하는 스크립트 중에서, 

이전의 ListenerJobQueue 그리고 PriorityQueue의 경우

서버 단계에서 사용하므로 가져오지 않습니다.

 

또한, 클라이언트는 ServerSession을 사용하므로 ServerSession을 위의 경로에 포함하였습니다.

 

2) 클라이언트에서만 사용하는 스크립트

 

클라이언트에서 패킷을 보내고 받기 위한 스크립트를 위와 같이 준비하였습니다.

 

3) GenPackets.bat

START ../../PacketGenerator/bin/Debug/PacketGenerator.exe ../../PacketGenerator/PDL.xml
XCOPY /Y GenPackets.cs "../../Unity/Client/Assets/Scripts/Packet"
XCOPY /Y GenPackets.cs "../../DummyClient/Packet"
XCOPY /Y GenPackets.cs "../../Server/Packet"
XCOPY /Y ClientPacketManager.cs "../../Unity/Client/Assets/Scripts/Packet"
XCOPY /Y ClientPacketManager.cs "../../DummyClient/Packet"
XCOPY /Y ServerPacketManager.cs "../../Server/Packet"

 

패킷을 자동으로 생성하는 GenPackets의 경우

새롭게 유니티 프로젝트의 경로를 추가하였습니다.

따라서 GenPackets를 실행하게 되면 유니티 프로젝트에도 패킷과 패킷 매니저가 생성됩니다.

 

4) 유니티 프로젝트 - NetworkManager

public class NetworkManager : MonoBehaviour
{
    ServerSession _session = new ServerSession();

    void Start()
    {
        string host = Dns.GetHostName();
        IPHostEntry ipHost = Dns.GetHostEntry(host);
        IPAddress ipAddr = ipHost.AddressList[0];
        IPEndPoint endPoint = new IPEndPoint(ipAddr, 7777);

        Connector connector = new Connector();

        connector.Connect(endPoint, () => { return _session; }, 1);
    }
}

 

유니티 프로젝트에서 네트워크 연결을 수행할, NetworkManager 스크립트입니다.

하나의 ServerSession을 생성하여 연결을 수행하게 됩니다.

 

5) 유니티 프로젝트 - PacketHandler

class PacketHandler
{
    // 인자는 어떤 세션에서 , 어떤 패킷이 조립되었는지를 의미함
    public static void S_ChatHandler(PacketSession session, IPacket packet)
    {
        S_Chat chatPacket = packet as S_Chat;
        ServerSession serverSession = session as ServerSession;

        if(chatPacket.playerID == 1)
            UnityEngine.Debug.Log(chatPacket.chat);
    }
}

 

PacketHandler에서는 로그를 찍되 이전에 사용하던 방식이 아닌

유니티에서 사용하는 방식으로 로그를 남기게끔 설정하였습니다.

 

C# 프로젝트를 우선 실행하여 서버와 클라이언트를 실행하고 

NetworkManager를 컴포넌트로 붙여Play 모드로 실행해보겠습니다.

 

이제 최종 실행결과를 확인해보겠습니다.

 

문제없이 실행되는 것을 확인할 수 있습니다.

728x90
반응형

'C#' 카테고리의 다른 글

유니티 연동 #3  (0) 2025.01.30
유니티 연동 #2  (0) 2025.01.28
JobTimer  (0) 2025.01.27
패킷을 모아서 전송하기  (0) 2025.01.27
JobQueue #2  (0) 2025.01.22