본문 바로가기

NOTE120

[Unity] 힙 메모리 최적화와 오브젝트 풀링 (펌) 출처 : http://teddy.tistory.com/메모리 힙영역프로그램이 돌아가면서 생성되는 값들은 값들은 메모리의 힙영역에 할당된다. 이것을 동적 메모리 할당이라 부른다. 게임을 예로들면 캐릭터를 새로 생성으로 인한 값 생성, 네트워크 작업을 통해 일정한 데이타를 받아 배열을 생성하거나 등등.. 많은 부분에 동적이 메모리 할당이 일어난다. 이러한 메모리 할당 요청이 발생하면 힙 메모리를 관리하는 관리자가 필요한 만큼의 영역을 힙에 예약한다. 예약된 영역은 다른 값이 할당될 수 없는 곳이된다. 예약된 곳은 핸들러나 포인터를 반환하여 값을 할당하는 등의 접근이 가능하게 된다. 누수 현상(memory leak)오류로 인한 영역을 가리키는 포인터 반환이 안된경우, 또는 영역의 예약이 잘못 된경우, 등으로 .. 2016. 9. 27.
[Unity] C# 스크립팅 마스터하기 BOOK 요약정리2 [이벤트] - 이벤트 주도적인 설계로 리팩토링하여 Ammo나 Health와 같은 프로퍼티가 Update 함수 안에서 검사되지 않고 값 할당만을 허용 - 새로운 값이 할당될 때 적절한 이벤트가 발생. - 이벤트 주도적인 설계는 성능 최적화 및 청결한 코드 유지가 가능해진다. Update 함수가 값을 검사하는 코드 등의 부담을 줄이고, 특정 값에 따라 반응하는 이벤트를 이용해 적절한 시점에만 이벤트가 불리운다. [이벤트 관리] - EventManager 클래스를 통해 오브젝트가 특정 이벤트를 수신할 수 있도록 한다. - EventListener : 자신이 발생시킨 이벤트를 포함한 어떤 이벤트가 발생하면 알기를 원하는 모든 오브젝트를 리스너라고 부른다. - EventPoster : 다른 모든 리스너가 알 수 .. 2016. 9. 27.
[Unity] C# 스크립팅 마스터하기 BOOK 요약정리1 [스크립트 인스턴스화]- 특정 오브젝트에 스크립트를 컴포넌트로서 추가해 숨을 불어넣는 과정을 인스턴스화라고 한다. [변수 표시]- 특정 private 변수를 표시하길 원할 때, Debug 모드를 켜서 확인하거나 [SerializeField] 특성을 함께 선언한다. [SendMessage와 BroadcastMessage]- 이 함수들을 사용해 오브젝트에 붙은 모든 컴포넌트의 함수를 이름으로 실행할 수 있다.- SendMessage는 하나의 게임 오브젝트에 붙어있는 모든 컴포넌트에 걸쳐 지정된 함수를 부른다.- BroadcastMessage는 SendMessage의 동작과 합쳐져서 게임 오브젝트의 모든 컴포넌트마다 지정된 함수를 부르고, 씬 계층상의 모든 자식 오브젝트와 그 자식 오브젝트에게까지 재귀적으로 .. 2016. 9. 26.
[Unity] 실행 순서 이벤트 함수 (펌) 1. Reset개체가 처음 연결되었을때 스크립트의 프로퍼티로 초기화하는데 호출, 이 함수는 씬이 시작되면 호출됨 (씬의 각 오브젝트에대해 한번) 2. Awake항상 Start 함수의 이전 및 프리팹의 인스턴스화 직후에 호출됨 3. OnEnable오브젝트가 활성화된 경우에만 호출됨, 이 함수는 오브젝트를 활성화 한 직후에 호출된다.(MonoBehaviour 인스턴스가 생성될때, 예를들어 레벨 로드 또는 스크립트 컴포넌트에 연결된 게임 오브젝트가 인스턴스화 될때 발생함) 4. Start스크립트의 인스턴스가 활성화되면 첫 번째 프레임의 업데이트 전에 Start가 호출됩니다. Update함수 호출되기 전에 호출됨 5. OnApplicationPause일반 프레임 업데이트 사이에서 pause가 탐지된 프레임의 끝.. 2016. 9. 26.
[Unity] 게임 최적화 기법 (펌) 출처 - http://vallista.tistory.com/entry/Unity-%EA%B2%8C%EC%9E%84-%EC%B5%9C%EC%A0%81%ED%99%94-%EA%B8%B0%EB%B2%95 프로젝트를 하고 완성이 될 무렵, 게임이 굉장히 괴랄한 프레임을 뿌려대며 제대로 굴러가지 않기 시작했다.필자의 컴퓨터는 사양이 굉장히 좋다고 자부할 수 있는 컴퓨터였다. 유니티 에디터가 잘못인지 소스코드 상에서 문제가 있는 것인지 보기 위해 탐색을 시작하게 되었고. 프로파일러를 통해 개선할 부분을 다수 개선하였다. 이 밑부터는 내가 경험한 것을 바탕으로 최적화를 한 방법에 대해 서술한다. - 프로젝트 진행시 참고했던 박민근 님의 유니티 최적화 테크닉을 참고하였다. - http://www.slideshare.n.. 2016. 9. 26.
[Unity] GameObject에 대한 이해 유니티에서 상자, 캐릭터, 빛, 카메라, 2D 텍스쳐 등 모든 씬에 배치된 것을 Game Object라고 한다.게임 오브젝트에 소스를 입력하고, 해당 오브젝트에 대한 역할을 정해주어야 Run시에 원하는 결과물을 얻을 수 있다.상단 메뉴에서 [Game Object] 를 통해 확인 해 볼 수 있다. Example Study를 위한 준비– File -> Save Scene -> ex_study 라는 이름으로 Scene 저장 [기본 위치는 내문서이지만 지정해도 상관없다] Object 생성(유니티 버전 5.1을 사용하는 지금 Main Camera(카메라)와 Directional Light(조명,빛)은 Default로 생성되어 있기때문에 따로 생성하지 않고 넘어간다.)– GameObject -> 3D Object .. 2015. 10. 3.