목록프로그래밍/유니티 (7)
강께르의 개발일지
에디터 코딩과 관련 없지만 오클루전 컬링 관련 메소드 OnBecameVisible 해당 메소드를 가진 오브젝트가 카메라의 렌더 범위 내에 들어오기 시작하면 호출 OnBecameInvisible 해당 메소드를 가진 오브젝트가 카메라의 렌더 범위 바깥으로 나가기 시작하면 호출 OnWillRenderObject 해당 오브젝트가 보이는 경우에 각 카메라에서 호출 카메라마다 호출하기에 다른 카메라마다 다르게 렌더할 수 있게 분기할 수 있다. 팁! 메테리얼의 색깔이 바뀌는 것은 런타임 중에 메테리얼의 인스턴스를 생성해 변경하는 것으로 원본에 영향 X 하지만 공용으로 사용하는 메테리얼에서 빠져나와 다른 새로운 메테리얼을 생성해 적용하는 것이기에 그에 따른 DrawCall이 늘어나는 점은 감안해야한다. Geometry..
파티클 시스템의 Rewind를 통해 역재생이 가능하다. 3d object의 3d Text를 이용해 데미지 텍스트 등을 출력할 수 있다. 이를 프리팹하고 Instantiate로 생성하여 사용한다. 프리팹 설정 시 유용한 것 Font Size : 폰트가 깨져있는 현상을 키워서 해결 Character Size : 너무 크다면 이 값을 조절 Anchor : 피봇점 위치 설정 Alignment : 문자열 정렬 TextMesh 컴포넌트로 텍스트 내용과 색깔을 트리거 : 물리적인 볼륨인데 판단하는 용도로 사용하고 물리적인 시뮬레이션을 하지 않는다. rigidbody가 붙여지면 그 쪽으로 이동에 관한 코드를 몰아주는 게 좋다. 포지션을 움직이면서 콜라이더가 붙어있으면 최적화에 좋지 않다. 굳이 하고 싶으면 콜라이더 트..
3d 모델링 다루기 모델링 파일의 rig 탭을 보면 Extra Transforms to Expose가 있다. 이 부분을 열면 모델링이 보여주지 않은 부분이 다 있을 것이다. 만약 씬상에서 위치를 가져오고 싶은 부위나 이용하고 픈 부위가 있다면 이 탭에서 원하는 부위를 체크해 씬 상에서 접근 가능하게 할 수 있다. OnTrigger 시리즈 OnCollision 시리즈 위 메소드들은 FixedUpdate 메소드에서 호출된다. 위 메소드들의 매개변수인 Collision과 Collider의 차이점이 있다. Collision은 충돌 시의 정보를 디테일하게 갖고 있는 클래스 Colllider는 흔히 알고 있는 그냥 충돌체이다. 위의 과정은 투사체를 캐릭터에서부터 발사하기 위한 과정인데 던져서 피격 처리하고 싶다면 ..
3d그래픽스의 카메라 역할 게임의 렌더링되는 것을 보여준다. UI 렌더링이랑 월드 렌더링을 합친 결과를 게임 화면으로 보여준다. Light Baked RealTime 프레임마다 렌더링할 그래픽을 계속 계산한다. 특정 조건에 맞는 계산을 미리 해놓고 계산된 결과를 가져다 쓴다. Mode에 그 설정을 바꿀 수 있다. Mixed까지 포함 Baked는 Light 맵을 만드는 것이다. 빛 렌더링은 하드웨어가 많이 요구되는 렌더링이다. 최적화와 렌더링 품질을 올려주는 Light 맵 생성 추천하는 방법이라고 한다. 움직이는 오브젝트인가? 오브젝트 체크박스 중 static이 있다. 안 움직일 오브젝트인 경우 이 체크박스를 체크하면 된다. mesh renderer와 skin meshrenderer 오브젝트 렌더링의 경우..
거리 계산할 때, 이동한 량의 반을 체크하면 좋다. 예 : speed * Time.deltaTime * 0.5f; 오늘의 목차 코루틴 플러그인 중 하나 – ITween 코루틴 쓰레드란? 프로그램의 흐름이라고 하면 된다. 주된 프로그램의 흐름을 메인 루틴. 멀티쓰레드란? 프로그램이 동작하다가 다른 프로그램의 흐름이 또 생기는 거다. 다른 이야기로 메인 루틴이 있다가 다른 서브 루틴들이 많이 생성하는 것이다. 왜 이런게 필요한가? 메인 쓰레드 안에서 모든 일을 다 처리하는데 만약 그 안에 시간이 오래 걸리는 처리가 있다면 그만큼 쓰레드 안에서의 다른 일을 처리하는 게 딜레이 될 수 밖에 없다. 그래서 서브 루틴이라 불리는 쓰레드를 생성해서 업무를 분담해서 처리하는 것이다. 그 예로 네트워크를 분리하는 것. ..
오브젝트와 컴포넌트에 대한 이야기 public으로 선언한 멤버에 대해서 인스펙터에 노출된다. enum도 가능하다. flags 값도 다 선택할 수 있다. 3d 모델링 파일 / 게임 오브젝트 구분해서 차이점은 다음에 알려주실 듯. 게임 오브젝트의 태그와 이름을 활용할 수 있다. Find계 메소드들은 비활성화된 오브젝트들을 찾을 수 없다. 컴포넌트 추가하는 방법 드래그-드롭 다른 오브젝트의 컴포넌트를 Copy-Component -> 복사할 오브젝트에 Paste-Component를 한다. 3. Add Component 컴포넌트도 public 변수로 선언할 수 있다. Transform, Camera 같은 오브젝트에서 다른 컴포넌트를 가져와서 쓰기 그냥 private으로 선언하고 getComponent로 가져온다...
많은 부분이 기능으로 제공하기에 WINAPI처럼 프로그래머가 구현하려고 하지 않아도 된다. 3D 그래픽스에 대한 이해가 필요하다. 스크립트를 작성할 때 유의할 점 클래스명과 파일명이 일치해야한다. 다르면 게임 오브젝트에 스크립트가 컴포넌트로 추가되지 않는다. 일치하지 않으면 빌드가 되더라도 그 컴포넌트의 기능을 사용할 수 없다. 유니티를 옮기거나, 버전 관리를 위해 저장할 때 4개의 폴더만 관리하면 된다. Assets Packages ProjectSettings UserSettings 나머지는 폴더나 파일은 유니티에 알아서 관리해준다. Packages 폴더 : 기본 기능 외에 필요한 기능을 이 폴더에 포함시키는 형태로 사용된다. 예 : 3d로 프로젝트를 만들면 2d에 필요한 패키지는 포함되지 않아서 만약..