반응형
작업스레드로 유니티엔진의 메인 로직에 접근하는것은 불가능함
유니티에서 대부분의 연산은 메인스레드가 처리해야 하기 때문에 Packet을 전송할때에도
MainThread에서 실행되게끔 설계해야함
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);
StartCoroutine("CoSendPacket");
}
void Update()
{
IPacket packet = PacketQueue.Instace.Pop();
if (packet != null)
{
PacketManager.Instance.HandlePacket(_session, packet);
}
}
IEnumerator CoSendPacket()
{
while (true)
{
yield return new WaitForSeconds(3.0f);
C_Chat chatPacket = new C_Chat();
chatPacket.chat = "Hello Unity !";
ArraySegment<byte> segment = chatPacket.Write();
_session.Send(segment);
}
}
}
반응형
LIST