-
Unity 실시간 네트워크 서버 엔진 Nclib(Necial)사용
https://github.com/Necial
에서 Nc1PbsGit을 받아서 적당한 곳에 압축을 푼다.Server와 Client중 먼저 Server를 준비한다.
Server 준비
VisualStudio로 Nc1PbsSln.sln을 연다.
만약 Dll찾을 수 없는 오류가 나면
Nc1Ex1Server '속성' -> '참조 경로' -> 'Nc1Lib'폴더가 있는 경로를 지정하고 '폴더 추가'를 하면 된다.Nc1Ex1Server프로젝트에 Nc1Ex1ServerMainAm2.cs을 편집하면 된다.아래 코드는 브로드캐스트를 위한 작업.추가 작업 필요 없게 바뀌었다.public class Sv : NccpcDll.NccpcNw1Sv //에 { public List mCs = new List(); //를 선언 //... public override void onNccpcNwEnter(int cti, string peer) { mCs.Add(cti); //를 추가 } public override void onNccpcNwLeave(int cti) { mCs.Remove(cti); //를 추가 } public override void onNccpcNwRecv(int cti, NccpcDll.NccpcNw1Pk2 ncpk) { using (var pkw = ncpk.copyDeep()) { this.send(mCs, pkw); } //를 추가 } }
수정 완료하고
빌드하고 실행하면 서버 준비는 끝난다.
Client 준비
원하는 Unity 프로젝트를 준비한다.
Assets폴더에 Plugins폴더를 만들고 'Nc1Lib'에 있는 Jc1Dn2_0.dll와 JcCtUnity1Dll.dll를 복사해둔다.Nc1PbsSln.sln솔루션에 Nc1Ex1Client프로젝트에 Nc1Ex1ClientMainAm1.cs파일속에
"class Client : JcCtUnity1.JcCtUnity1"클래스 전체롤 복사해서 Unity script에 넣는다.Client에 클래스를 수정한다.
innLogOutput()함수를 Unity용에 맞게 수정protected override void innLogOutput(string s1) { Debug.Log(s1); } public void qv(string s1) { innLogOutput(s1); }
생성과 서버 접속 명령 추가
connect()함수 호출
Client mCt; void Start() { //... mCt = new Client(); connect("127.0.0.1", 7777); //... }
framemove()함수 호출
void Update() { //... mCt.framemove(); //... }
기본적인 사용 준비는 끝났다.
간단 사용 Ex
//네트워크를 관리할 클래스 편집 Client mCt = new Client(); //추가 public void qv(string s1) { mCt.qv(s1); } // 보낼 데이터 처리 int pkt = 1111; using (JcCtUnity1.PkWriter1Nm pkw = new JcCtUnity1.PkWriter1Nm(pkt)) { pkw.wReal32(0); pkw.wReal32(mY); pkw.wReal32(0); mCt.send(pkw); } //Client클래스에 받는 데이터 처리 protected override bool onRecvTake(Jc1Dn2_0.PkReader1 pkrd) { Obj.transform.eulerAngles = new Vector3(pkrd.rReal32(), pkrd.rReal32(), pkrd.rReal32()); return true; }
이런식으로 원하는 내용을 넣어 사용하면 된다.
'Unity' 카테고리의 다른 글
Unity - 목적지로 위치 이동 (0) 2021.04.02 Unity Ui Effect (0) 2021.03.28 Unity Ui Mask (0) 2021.03.28 Unity - Meshes, Materials, Shaders, Textures (0) 2021.03.27 Unity - ProBuilder(UV Edit) (0) 2021.03.27 Unity - Rotation(Euler angle, Quaternion) (0) 2021.03.25 Unity - 자식 GameObject에 있는 Component얻기 (0) 2021.03.25 Unity - Unity Editor 다중 실행(창 여러개 시행) (0) 2021.03.25