본문 바로가기

전체 글

소켓 프로그래밍 소켓 프로그램이란 : 소켓은 컴퓨터를 네트워크에 접속시키는 역할, 그러한 소켓을 이용한 프로그래밍 ###잘못된 내용이 있다면 알려주세요! #이론 네트워크에서 데이터들이 전송되는 방식 네트워크에서 돌아다니는 데이터의 규모와 용도는 굉장히 다양합니다. 이러한 데이터들의 전송을 관리하려면 일정한 규칙이 필요했습니다. 때문에 작은 데이터 하나를 전송해도 수많은 규칙에 따라 패키징 되어 전송되게 되는데, 그 수많은 규칙들을 프로토콜이라고 합니다. TCP/IP 4계층 응용 계층 : 어떤 데이터인지 전송 계층 : 어떻게 보낼 것인지 인터넷 계층 : 전달 네트워크 계층 : 전달(네트워크 하드웨어, 드라이버) ex) 실시간 데이터가 전송이 필요하니까 IP주소로 UDP방식을 통해 데이터를 전송해야지 #응용 소켓 프로그래밍.. 더보기
[Unity] 유니티는 단일 쓰레드 쓰레드를 열어 통신을 하고 수신된 값으로 씬을 열다가 오류가 났다. UnityException: @@@@ can only be called from the main thread. 유니티에서 지원하는 함수는 메인 쓰레드에서만 호출하라는 에러였다. 유니티는 단일 쓰레드로 프로세스를 처리한다. 새로운 쓰레드에서 단일 쓰레드에 끼어들 수 없다. 때문에 새로운 쓰레드에서 작업한 내용은 변수에 담아두고 메인 쓰레드에서 꺼내서 사용해야한다. void OnReceving() { while (true) { mSocket.Receive(data); mData = data; mIsResponsing = true; } mSocket.Close(); } // @유니티는 단일 쓰레드로 동작 // @ 통신 스레드에서 데이터가 오면.. 더보기
[Unity] MonoBehaviour 참고 링크 : https://skuld2000.tistory.com/25 Mono Behaviour 닷넷 프레임워크를 사용하기 위해 개발된 것 Mono를 활용하여 만든 기본 클래스 Monobehaviour 유니티 엔진에서 호출되는 콜백 함수를 제공 : MonoBeHaviour를 상속 받았다면 해당 콜백함수들을 계속 돌리고 있다는 뜻, 사용하지 않는다면 제거하는 것이 좋다. 더보기 상세 FixedUpdate 특정 시간마다 호출 (균일한 간격의 작업이 필요할 때 사용 : ex) 부드러운 이동) Update 매 프레임 마다 호출 (Input과 같이 매 프레임마다 체크가 필요할 때 사용) Start/Awake Start는 활성화 이후에 호출됨 (개인적으로)비활성화 상태였다가 활성화시켜서 사용하는 프리팹의 경우 .. 더보기
[C++]가상 함수 가상 함수 호출시 상속관계에 있는 클래스 중 실객체의 함수가 호출 가상 함수 동작 과정 : 가상 함수 선언시 자료형 판단 시점이 런타임으로 미뤄짐 가상 함수의 필요성 포인터 자료형 상관없이 실객체 함수 호출이 필요할 경우 다형성 인터페이스 더보기
[Unity] Json 라이브러리 Json 문자열을 다루기 위해 Unity의 JsonUtility를 사용했었다. 하지만 JsonUtility는 UnityEngine.dll 함수이기 때문에 외부 프로젝트에서 동일하게 사용할 수 없었다. UnityEngine.dll를 참조한 라이브러리 만들기 때문에 다른 Json 라이브러리를 사용하였다. NewtonSoft.json 프로젝트 -> Nuget패키지 관리 -> Newtonsoft.Json 다운로드 사용 예시 Json -> String JObject.FromObject(dic).ToString(); String -> Json Dictionary praram = JsonConvert.DeserializeObject(parameter); 단, 해당 라이브러리를 유니티에서 사용할 경우 빌드할 때 오류가.. 더보기
C#의 Delegate - CallBack 만들기 Delegate - 대리자 말 그대로 생성한 것을 대신 실행가능 = 함수를 대리 실행 시켜 CallBack 을 만들 수 있음 public class utility : MonoBehaviour { // GameObject를 파라매터로 가지는 CallBack public delegate void Del(GameObject obj); } // 오브젝트 Instantiate()으로 생성, 초기화 // 오브젝트 풀에 들어오는 객체들은 모두 objectPoolListener를 상속받음 protected GameObject InstantiateObject() { GameObject temp_obj = Instantiate(m_obj); m_memoryPool.Add(temp_obj); // @warning 오브젝트가.. 더보기
오브젝트풀과 옵저버 패턴 문제 오브젝트 풀에 객체를 생성하고 해제하는 과정에서 객체 클래스와 오브젝트 풀 클래스 간에 생기는 연결이 불필요해 보임 해결 방안 객체 선언 시, 해제할 때 처리하는 콜백함수만 있다면 깔끔하게 처리가능 방법 하나의 클래스가 여러객체를 관리한다는 점에서 옵저버 패턴과 비슷하기에 결합해서 코드 작성 코드 public class bombManager : objectPool { public GameObject m_bomb; // Start is called before the first frame update void Start() { /* delete 콜백 */ utility.Del cb_delete = new utility.Del(DeleteBomb); // 오브젝트 풀에 미리 생성 InitObjectMe.. 더보기
2019 게임 플레이 후기 히어로 칸타빌레 브라울 스타즈 롤러코스터 플래닛 프린세스 커넥트 드래곤빌리지w 킹오브 파이터 올스타 궁수의 전설 일곱개의 대죄 오토체스 달빛조각사 랜덤다이스 브라운더스트 명일방주 전염병 주식회사 #히어로 칸타빌레 (★☆☆☆☆ ) 단점 장점 UI 불편함, 산만함 인게임 전투는 퍼즐게임 느낌 퍼즐게임이 재미없음 UI 예쁨 일러 예쁨 #브롤 스타즈 (★★★★★ ) 장점 (개인적으로)롤 모바일 버젼 단순하고 직관적인 UI 캐릭터 개성/스킬 뚜렷 스테이지 목적/구성 뚜렷 스테이지 1 : 존버해라, 꼼수쓰는 타입에게 최적화 스테이지 2 : 쎈 놈을 죽여라 , 배틀 최적화 스테이지 3 : 아이템을 많이 먹어라, 타이밍 재기에 최적화 시스템 다양한 캐릭터 사용 유도(한 가지 캐릭터 오래할 수록 얻을 수 있는 보상 적어.. 더보기