728x90
728x90
빛, 라이팅(Lighting) 빛은 음영(그림자)을 표현하는 수단으로 빛의 유무에 따라 2D 콘텐츠인지, 3D 콘텐츠인지가 결정된다. 유니티에서는 기본적으로 3가지 직접광 라이팅 컴포넌트를 제공하고 있다. (Directional Light, 방향 1개, Point Light, 360도 방향, Spot Light, 50~60도 방향) 콘텐츠를 제작할 때 라이팅은 매우 중요한 요소이지만 실시간으로 렌더링 해야 하기 때문에 연산량이 많아 개발을 매우 무겁게하는 요소이기도 하다. 특히, Point Light와 Spot Light는 방향이 광범위한 탓에 기본적인 연산량이 많고 최적화에 문제를 일으키기도 한다. 따라서 정말 필요한 상황이 아니라면 실무에서는 잘 안쓰고 그 대신 Light map을 사용한다. 유니티에..
게임 개발과 관련하여 팀 프로젝트 협업과 MVC 패턴의 이해 개발 팀 프로젝트를 수행하는 과정에서 클라 - 클라 / 클라 - 서버 간 협업을 자주 하게 된다. 여기서 문제는 개발 프로세스가 연결되어 있어 서로 영향을 주고받기 때문에 만약 한 쪽에서 구현이 안되면 다른 쪽도 개발 진척에 문제가 발생할 수 있다. 가령 서로 다른 두 개발자가 각각 피격 기능과 저장 기능을 구현해본다고 가정해보자. 피격 기능으로 체력이 깎인 데이터가 있어야 그 데이터가 저장되는지를 테스트해 볼 수 있기 때문에 개발 순서 상 피격 기능 -> 저장 기능 순으로 구현되어야 할 것이다. 하지만 개발 기간은 제한되어 있기 때문에 한쪽이 개발을 완료할 때까지 기다릴 수 없다. 이럴 때 실무에서는 모듈화(Modularity)를 통해 워크 ..
메모리의 정적/동적 할당 유니티 컴파일러가 실행되는 동작 순서는 정적 메모리 영역 -> 동적 메모리 영역이다. 세부적으로 나눠서 살펴보면 먼저 정적 메모리 공간의 함수들이 실행되고, 정적 영역의 static 변수들이 실행된다. 그 다음 동적 메모리 공간에 저장된 변수들이 실행되게 된다. 유니티 싱글톤(Singleton) 패턴 활용 이러한 메모리 할당 개념을 바탕으로, 싱글톤 객체를 설명해보고자 한다. 일단 유니티에서 생성되는 모든 객체는 최초로 동적 메모리 공간인 heap에 올라간다. 하지만 heap 영역에 위치한 객체들은 사용 범위에 한계를 가지고 있을 수 있다. 그렇기 때문에 객체 클래스 자체를 static 영역에 올리고 instance를 생성해 각각 클래스 별로 뿌려줄 수 있다. 이 것이 바로 관리..
Get/Set 프로퍼티와 객체지향 캡슐화 객체지향의 3요소는 캡슐화, 상속, 다형성이다. 상속 상속의 대표적인 예시는 C# 스크립트의 첫 장면에서 확인할 수 있다. 스크립트를 생성하면 Class AA : MonoBehaviour라고 상단에 표시된다. 이는 AA 라는 클래스가 MonoBehaviour라는 부모 클래스를 상속 받은 개념이다. MonoBehaviour에 마우스 커서를 대고 F12를 누르면 MonoBehaviour 클래스를 볼 수 있는데 MonoBehaviour 클래스 역시 Behaviour를 상속받은 것을 확인할 수 있다. 이 역시 들어가보면 Component 클래스를 상속 받고 있고, Component 클래스 역시 Object 클래스를 상속 받은 것을 확인할 수 있다. 즉, 객체 지향에서 사..
== 비교 연산자와 관련된 랜덤 버그 발생 원인과 방어코드 사용한 해결 방법 if (collision.gameObject.CompareTag("Player")) { PlayerHealth ph = collision.gameObject.GetComponent(); ph.hp--; if(ph.hp
this 키워드 메모리는 저장되는 주소, 변수는 그 주소를 한 번에 볼 수 있는 이름의 개념으로 생각하면 된다. 예) 서울역(변수), 서울시 중구 한강대로 405(메모리) Class는 Heap 영역, 함수는 Code 영역(함수만 들어가 있는 table이 있어 호출하는 개념), 변수는 Stack영역에 저장 obj a = new obj() 객체를 생성하면 heap 메모리 공간에 할당한다. Gameobject obj = new GameObject(); - GameOjbect : 클래스 - obj : 변수 - new GameObject() : 생성자 함수(객체를 생성해주는 함수, heap 메모리 공간 할당) this는 함수와 변수 등이 저장되어 있는 메모리 영역에 관련한 이슈, C/C++ 참고 GameObjec..