유니티 MonoBehaviour 클래스 상속 비활성화 문제 1)아래 스크립트에서 MonoBehaviour 클래스 상속이 정상적으로 이루어지고있지 않은것을 확인할수있다. 2)해당 스크립트를 게임오브젝트의 컴포넌트로 추가할수없는것을 확인할수있다. (the script don't inherit a native class that can manage a script) 3)preferences의 external tools으로 이동한다. external script editor에서 스크립트 에디터를 설정한다. 예에서 기본으로 설정되있는 open by file extension에서 비쥬얼 스튜디오로 변경하였다. 4)클래스 상속이 정상적으로 이루어지는것을 확인할수있다.
유니티 에셋 curvy -스플라인에 오브젝트 정렬하기(generator, volume spots) generator의 volume spots 모듈을 사용하여 스플라인에 오브젝트를 정렬하는 방법 1)씬에 스플라인을 생성한다. 2)새로운 generator 게임오브젝트를 생성한다. 3)generator의 edit graph로 이동한다. 4)input spline path 모듈을 추가하고 스플라인을 참조시킨다 5)rasterize path 모듈을 추가하고 입력에 input spline path를 설정한다. 6)스플라인에 정렬할 오브젝트를 생성한다(cube) 7)input gameobjects 모듈을 추가하고 cube 오브젝트를 참조시킨다. volume spots 모듈을 추가하고 입력에 rasterize path..
유니티에서 코루틴 yield return new WaitUntil 사용하기 yield return new WaitUntil는 제공된 대리자가 true로 평가될때까지 코루틴의 실행을 일시 중단시킨다. (제공된 대리자는 update함수 이후와 LateUpdate함수 이전에 각 프레임에서 실행된다) 1)아래 스크립트의 시작함수에서 시작된 코루틴은 프레임의 값이 10보다 커질때까지 실행을 유예한다. 업데이트 함수에서는 매 프레임 해당 프레임을 출력한다. 2)프레임의 값이 10보다 커지면 대리자가 마침내 참으로 평가되어 코루틴이 실행을 진행한다. 3)마찬가지로 아래 코루틴은 변수 b의 값이 참이 될때까지 실행을 유예한다. 4)사용자가 인스펙터에서 변수의 값을 참으로 설정하면 코루틴이 실행을 진행한다.
유니티 - 코루틴에서 yield return null 사용하기 1)아래 유니티의 이벤트 함수 실행 순서에서 정상적인 코루틴 업데이트는 Update 함수가 호출된 이후에 실행되는것을 확인할수있다. https://docs.unity3d.com/Manual/ExecutionOrder.html 2)아래 스크립트의 시작 함수에서 코루틴을 실행한다. 코루틴은 yield return null에서 업데이트 함수가 호출될때까지 실행을 유예한다. 3)업데이트 함수가 호출되고 yield return null 이후에 작성된 코드가 실행된것을 확인할수있다. 4)마찬가지로 yield return null 라인에서 코루틴의 실행을 일시중지하고 업데이트함수 호출 이후에 다음 코드가 실행되는것을 확인할수있다.
유니티 에셋 curvy API와 유용한 함수 및 프로퍼티 Curvy API Reference https://api.curvyeditor.com/710/ isInitialized bool IsInitialized [get] 스플라인이 완전히 초기화되고 모든 세그먼트가 로드되었는지 여부를 확인하는데 사용한다. https://api.curvyeditor.com/710/class_fluffy_underware_1_1_curvy_1_1_curvy_spline.html 코루틴에서 스플라인이 초기화될때까지 대기한다. GetTangent, GetTangentFast Vector3 GetTangent (float localF, Space space=Space.Self) 포인트의 tangent를 가져오는 함수. 스플라인 ..
유니티 URP에서 포스트프로세싱 사용하기(post processing) URP는 자체통합 포스트프로세싱을 제공한다. 씬에 볼륨을 추가하고 카메라에서 post processing을 활성화하여 단순한방법으로 사용할수있다. 1)URP 프로젝트에서 씬을 구성하였다. 2)씬에 게임오브젝트를 생성하고 volume 컴포넌트를 추가한다. 3)volume의 profile에서 우측의 new를 클릭한다. 4)새로운 볼륨 프로파일이 생성된것을 확인할수있다. 5)프로젝트의 에셋 폴더에서 새로 생성한 프로파일 에셋을 확인할수있다. 6)프로파일을 선택하고 add override를 클릭한다. 7)추가할 포스트프로세싱을 선택한다. 8)추가한 포스트프로세싱을 활성화한다. 9)포스트프로세싱을 사용할 카메라를 선택하고 rendering의 ..
유니티 에셋 curvy - 스플라인 연결하기(connection) connection을 사용하여 두개 이상의 스플라인을 연결할수있다. 1)씬에 두개의 스플라인을 생성한다. 2)connection에 사용할 두 포인트를 선택한다. 예에서 첫번째 스플라인의 마지막 포인트와 두번째 스플라인의 첫번째 포인트를 선택하였다. 3)도구모음에서 connect를 클릭한다. 4)connection을 설정한 포인트는 추가적인 connection 속성들을 표시한다(control point options, follow-up, connection option) 5)씬의 _CurvyGlobal_ 오브젝트의 하위에 connection 게임오브젝트가 추가된것을 확인할수있다. 6)connection 게임오브젝트를 선택하면 마찬가지로 해당..
유니티 에셋 curvy - generator 메시의 해상도 높이기 1)씬을 표시하는 draw mode를 wireframe으로 변경한다. 2)generator에 의해서 생성된 메시의 와이어프레임을 확인할수있다. shape의 해상도 3)input spline shape을 선택한다. 입력 shape이 2D/Circle로 설정되어있는것을 확인할수있다. count는 circle shape의 포인트 개수를 의미한다(CP) 4)view의 approximation에 체크하면 스플라인의 캐시포인트를 표시한다. 5)shape의 스플라인에서 max points per unit의 수치를 증가시킨다. max points per unit는 월드 거리 유닛 단위당 최대 샘플링 포인트 개수를 의미한다. 또는 cache density..
유니티 게임 그래픽 최적화 주제 모음 프러스텀컬링 오쿨루젼컬링 정적 배칭 유니티에서 정적배칭(static batching) 사용하기 동적 배칭 유니티에서 동적배칭 사용하기(dynamic batching) GPU인스턴싱 유니티 GPU 인스턴싱(instancing) vsync CombineMeshes함수 유니티에서 CombineMeshes 함수를 이용하여 배칭하기 LOD(level of detail) 유니티에서 LOD 그룹 설정하기 라이팅기법 라이트맵 gpu스키닝 라이트프로브 리플렉션 프로브 텍스처 압축 파티클최적화 렌더링파이프라인(빌트인, URP, HDRP) 유니티의 렌더링 파이프라인(built-in, SRP, URP, HDRP) 포워드렌더링, 디퍼드렌더링 안티 엘리어싱 유니티 안타 엘리어싱(anti-al..
유니티에서 높이맵(height map)을 사용한 터레인(Terrain) 생성1)씬에서 터레인을 생성합니다. 2)터레인 세팅(terrain settings)으로 이동합니다. 3)텍스처 해상도(texture resolutions)에서 import raw를 클릭하고 높이맵으로 사용할 raw 파일을 선택합니다.유니티에서 터레인 높이맵 텍스처로 지원하는 raw 이미지 파일의 형식은 다음과 같습니다.16비트, grayscale, non interlaced, IBM PC RAW 파일, 해상도 - 2의 거듭제곱(power of 2) +1 square sizehttps://proceduralworlds.freshdesk.com/support/solutions/articles/33000204317-raw-file-won-..
UNITY에서 렌더 텍스쳐(render texture) 사용하는 방법아래 스크린샷에서 유저가 캐릭터를 선택하면 사용자 메뉴(UI)의 특정 영역에서 애니메이션을 실행하는 3D 모델을 확인할수있다. 렌더 텍스쳐를 활용하면 캔버스에 영역을 설정하고 이 영역에 카메라뷰에서 보여지는 씬을 렌더링 할수있다.1)캔버스에 panel를 생성하였다.2)예시에서 사용할 피사체로 캐릭터(sphere)와 새로운 카메라를 생성한다.3)렌더텍스쳐에 렌더링할 카메라뷰의 구도를 아래와 같이 구성하였다. 4)프로젝트에 render texture를 생성한다.5)render texture의 속성을 설정한다.6)이 렌더 텍스쳐를 위에서 새로 생성한 카메라의 target texture에 참조시킨다.7)ui에서 위 카메라뷰를 렌더링할 영역을 위..
유니티 기본 쉐이더(particles standard surface)카메라 근접 오브젝트를 페이드 아웃시키는 쉐이더1)유니티에서 1인칭 플레이어의 시점 카메라가 씬의 오브젝트에 아주 근접하면 아래 두번째 이미지와 같이 클리핑된다.2)일반적으로 이것은 카메라의 clipping planes에서 near, far 수치를 입력하여 조절할수있지만 오브젝트를 통과할때 클리핑된 단면이 확인되는것은 개선할수없다.3)위 문제는 particles의 standard surface 쉐이더가 제공하는 옵션인 camera fading으로 개선할수있다. 새로운 재질을 생성하고 해당 쉐이더를 선택한다.4)블렌딩 옵션의 rendering mode를 transparant로 선택하고 camera fading에 체크한후 near, far ..