본문 바로가기

Programming/Unity

[Unity] Vector3는 Heap에 메모리 할당?? Vector3는 위치 설정을 위해 빈번하게 사용된다. gameObject.transform.position = new Vector3(0,0,0); gameObject에 위치를 할당할 때 new를 사용하는 것을 보고 힙에 할당하는 줄 알고 사용하기가 꺼려졌다. 계속 Vector3를 사용해도 되는 걸까? #1 의문 "왜 위치값을 넣어줄 때 new를 붙여서 Vector3를 생성하는 걸까. 이는 Heap에 할당되는 것인가 Stack에 할당되는 것인가" 일단 Vector3 정체는 구조체이다. https://3dmpengines.tistory.com/1566 해당 게시글도 같은 의문점을 가졌다. 요약하자면 Vector3는 구조체가 맞고 new로 생성 시, 스택에 메모리가 할당된다. 게시글의 실험 재확인차 Updat.. 더보기
[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는 활성화 이후에 호출됨 (개인적으로)비활성화 상태였다가 활성화시켜서 사용하는 프리팹의 경우 .. 더보기
[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); 단, 해당 라이브러리를 유니티에서 사용할 경우 빌드할 때 오류가.. 더보기