유니티 에셋 curvy - 스플라인에서 메시 생성하기(generator) generator의 shape extrusion를 사용하여 메시를 생성하는 방법 1)씬에 스플라인을 생성한다 2)새로운 generator 게임오브젝트를 생성한다. 3)generator의 edit graph로 이동한다. 4)그래프에서 마우스 우클릭한후 add template의 shape extrusion을 선택한다. 5)5가지 모듈(input spline path, input spline shape, shape extrusion, volume mesh, create mesh)을 사용하여 최종적으로 메시를 생성한다. 6)씬에서 생성한 메시를 확인할수있다. shape extrusion은 경로를(spline path) 따라서 모양을(spl..
유니티 URP프로젝트에서 기존의 쉐이더 업그레이드하기 프로젝트에서 URP로 설정한 이후에 재질이 보라색으로 표시되는 경우 쉐이더 전환을 사용하여 문제를 해결할수있다 (사용자가 작성한 쉐이더, custom shader는 전환되지않는다) 1)아래 예에서 URP로 전환한 프로젝트의 재질 및 모델이 보라색으로 표시되는것을 확인할수있다. 이것은 URP에서 빌트인 렌더파이프라인의 쉐이더를 지원하지않기때문이다. 2)기존 프로젝트에서 사용중인 쉐이더를 URP 호환 쉐이더로 전환해야한다. 프로젝트의 모든 재질 또는 선택한 재질을 URP 호환 쉐이더 및 재질로 업그레이드할수있다. 상단의 edit 메뉴에서 render pipeline> URP>upgrade project materials to URP materials 또는..
유니티 에디터에서 스크립트의 정수, 실수값을 슬라이더로 표시하기 Range 어트리뷰트(RangeAttribute)를 사용하면 인스펙터에서 스크립트의 int 또는 float가 기본 숫자 필드 대신 슬라이더로 표시된다. 1)아래 스크립트에서 실수형 변수를 선언하고 상단에 Range 어트리뷰트를 기입하였다. 2)인스펙터에서 슬라이더를 표시하며 0.0f - 10.0f 범위에서 실수값을 변경할수있다. 3)정수형 변수를 선언하고 Range 어트리뷰트를 추가하였다. 4)해당 범위에서 정수값을 변경할수있는 슬라이더를 표시한다.
유니티에서 패키지를 기본값으로 재설정하기(reset pacakges to defaults) 패키지를 기본값으로 재설정하면 프로젝트에서 사용자가 설치한 모든 패키지들을 제거하고 기본값으로 초기화합니다. 이 작업은 컴파일 또는 프로젝트 손상을 발생시킬수있습니다. 아래 예에서 일부 패키지의 an error occurred while resolving packages:project has invalid dependencies 에러를 해결하기 위해 패키지를 초기화하였습니다. 1)콘솔에서 project has invalid dependencies 에러를 확인합니다. 2)package manager에서 일부 패키지의 an error occurred while resolving packages 에러를 확인할수있습니다...
유니티(unity)에서 어셋과 관련된 리소스 검색하기프로젝트에서 선택한 에셋이 사용중인 리소스를 검색하는 방법(select dependencies) 1)예를들어 프로젝트 에셋인 프리팹을 선택하고 마우스 우클릭한후 select dependencies 를 선택하면 2)프리팹을 구성하는 스크립트, 재질, 텍스쳐등을 검색 및 표시한다. 3)씬의 dependencies를 선택하면 4)씬에서 사용중인 프리팹을 표시하고 같은 방법으로 프리팹의 리소스를 검색할수있다.
유니티(unity) - 씬에서 참조되고있는 에셋 확인하기씬에서 프로젝트의 어셋이 어디에서 어떻게 참조되고 사용중인지 확인하는 방법 1)유니티 asset store에서 구매한 어셋으로 씬을 구성하였다. 2)아래는 씬을 구성하는데 사용한 에셋으로 유니티 에셋 스토어에서 구매한것이다. 예를들어 water 재질이 씬에서 사용중인지 확인하려면 해당 어셋을 마우스 우클릭하고 find references in scene을 선택한다.(단 find references in scene 는 현재 작업중인 씬에서만 사용가능하다) 3)씬의 hierarchy에서 해당 어셋이 참조되고있는 게임 오브젝트를 표시할것이다. 4)게임 오브젝트에서 해당 재질을 사용중인것을 확인할수있다. 5)같은 방법으로 스크립트에서 참조하는 프리팹을 확인..
Unity에서 collaborate를 활용하여 프로젝트 클라우드 백업하기유니티의 collaborate는 팀 작업시 클라우드 환경에서 프로젝트를 저장, 동기화, 공유할수있게 하기위해 고안되었다. collaborate를 이용하면 프로젝트를 클라우드에 백업하고 업데이트할수있다.1)테스트를 위해 새 프로젝트를 생성하였다(에셋 패키지를 추가하려면 add asset package를 클릭하여 추가)2)새로운 오브젝트를 생성하고 씬을 구성 및 씬을 저장한다. 새로운 에셋을 임포트하고 project settings를 변경하는 등 게임 프로젝트를 진행하였다.3)unity collaborate의 설치 유뮤, 버전을 확인하기위해 package manager로 이동한다.4)목록에서 unity collaborate를 확인할수있다..
UNITY에서 렌더 텍스쳐(render texture) 사용하는 방법아래 스크린샷에서 유저가 캐릭터를 선택하면 사용자 메뉴(UI)의 특정 영역에서 애니메이션을 실행하는 3D 모델을 확인할수있다. 렌더 텍스쳐를 활용하면 캔버스에 영역을 설정하고 이 영역에 카메라뷰에서 보여지는 씬을 렌더링 할수있다.1)캔버스에 panel를 생성하였다.2)예시에서 사용할 피사체로 캐릭터(sphere)와 새로운 카메라를 생성한다.3)렌더텍스쳐에 렌더링할 카메라뷰의 구도를 아래와 같이 구성하였다. 4)프로젝트에 render texture를 생성한다.5)render texture의 속성을 설정한다.6)이 렌더 텍스쳐를 위에서 새로 생성한 카메라의 target texture에 참조시킨다.7)ui에서 위 카메라뷰를 렌더링할 영역을 위..
unity에서 sprite packer를 사용하여 드로우콜(batches, setpass calls)을 줄이는 방법개별적으로 존재하는 텍스쳐를 아틀라스에 모아(packing) 이미지의 불필요한 공백을 줄이고 렌더링 프로세스에서 한번에 처리하여 드로우콜 수치를 낮출수있다.1)먼저 텍스쳐의 타입을 sprite로 변경한다(텍스쳐를 선택하고 import 세팅에서 sprite 타입을 선택, apply를 클릭하여 반영한다)2)동일한 방법으로 sprite packer를 사용할 모든 텍스쳐를 스프라이트 타입으로 변경하였다.게임을 플레이하여 드로우콜 수치를 확인한다. 이 수치가 높으면 렌더링 프로세스에서 프레임레이트에 영향을 끼친다.3)sprite packer를 활용하여 이 수치를 낮출수있다. 유니티의 editor se..
유니티에서 SceneManager.LoadScene를 사용하여 씬 로드하기1)현재 씬을 저장한다(scene_01)2)새로운 씬을 생성한다(new scene)3)씬을 구성하고 저장한다(scene_02)4)상단의 file메뉴에서 build settings를 선택한다.5)add open scenes를 클릭해서 씬을 추가한다.6)아래 스크립트를 추가한 게임 오브젝트가 씬에 존재하면 게임을 시작하고 3초후에 "scene_02" 씬을 로딩한다. 함수에서 씬 이름 대신에 인덱스를 사용하여 해당 씬을 로드할수있으며 SceneManagement 네임스페이스 사용을 선언해야 해당 함수를 사용할수있다.
유니티에서 마우스 클릭 이벤트에 의한 OnMouseDown 함수 호출하기1)씬에서 게임오브젝트를 생성한다.2)마우스 클릭 이벤트에의해 함수를 호출하려면 오브젝트는 콜라이더를 가지고있어야한다.3)이 게임오브젝트의 스크립트에서 이벤트함수인 OnMouseDown를 선언하였다.4)게임을 플레이하고 씬에서 게임 오브젝트를 클릭하면 함수가 호출된다.
유니티에서 레이캐스팅하고 hit 정보 아웃, 출력하기 특정 위치(origin)에서 특정 방향(direction)으로 최대 길이(max distance)의 레이를 캐스팅하여 레이가 콜라이더에 닿으면 true를 리턴한다.이때 hit에 대한 더 많은 정보를 out를 확인할수있다(RaycastHit)레이캐스팅에의해 타겟 오브젝트의 이름, hit포인트, 거리, 노말을 출력해보았다.길이 제한없는 레이를 캐스팅하려면 maxDistance 인수에 Mathf.Infinity를 넘긴다.