유니티(unity)에서 오브젝트의 축 정렬하기(Quaternion.FromToRotation, Quaternion.LookRotation) Quaternion.FromToRotation, Quaternion.LookRotation 함수를 사용하여 오브젝트를 회전시키고 축 정렬하기 1)아래 예에서 rotateCylinder을 회전시켜서 y축을 targetCylinder의 y축과 일치시키고자한다. 2)아래 스크립트에서 Quaternion.FromToRotation함수를 사용하여 rotateCylinder의 회전을 설정한다. rotateCylinder의 y축(rotateCylinder.transform.up)을 targetCylinder의 y축(targetCylinder.transform.up)과 일치시킨다...
유니티(unity)에서 라이트의 그림자 설정(cast shadow, receive shadow) 1)예에서 씬에 sphere, cube 오브젝트를 생성하였다. cube 오브젝트는 바닥에 그림자를 드리우고(cast shadow) sphere 오브젝트의 그림자를 받는것을 확인할수있다. 2)빛에 의한 그림자를 생성하려면 라이트 오브젝트의 shadow type을 설정한다(hard shadows, soft shadows) 3)cube 오브젝트의 mesh renderer에서 cast shadows를 활성화하면(on) cube오브젝트에 의한 그림자를 생성한다. receive shadows에 체크하면 cube 오브젝트의 표면에 다른 오브젝트에 의한 그림자를 생성한다. cube 오브젝트의 receive shadows 비..
유니티 URP에서 알파 클리핑 사용하기(alpha clipping) 알파 클리핑(alpha clipping)은 투명한 영역과 불투명한 영역의 경계가 존재하는 투명 효과를 표현할때 사용할수있다. 예를 들어 동물의 날개, 나뭇잎등에 알파 클리핑을 사용하면 비교적 저해상도 모델에서 세부적인 표현이 가능하다. 1)알파클리핑을 사용하려면 텍스처에 알파 채널을 추가하여 투명한 영역과 불투명한 영역을 설정한다. 2)유니티에서 불러오기한 해당 텍스처의 알파 채널을 확인할수있다(import settings) 3)모델의 재질에서 알파 클리핑을 지원하는 URP의 빌트인 셰이더를 선택한다(lit, simple lit, unlit, baked lit, complxe lit) 4)재질의 속성에서 알파 클리핑(alpha clipp..
게임엔진 유니티를 공부할수있는 웹사이트 목록 유니티 공식 웹사이트(unity learn) https://learn.unity.com/ 유니티 공식 유튜브 채널 https://www.youtube.com/c/unity/featured 유니티 코리아 공식 유튜브 채널 https://www.youtube.com/c/UnityKoreaHi/videos Unity Korea 유니티 테크놀로지스 코리아 (Unity Technologies Korea)공식 유튜브 채널입니다. 유니티 개발과 최신 유니티 기술 소개 및 유니티로 만들어진 다양한 콘텐츠를 만나보실 수 있습니다. www.youtube.com 유니티 코리아 공식 네이버 카페 https://cafe.naver.com/unityhub 유니티 허브 (Unity Hu..
유니티 안드로이드 빌드 - 유효하지않은 NDK 버전 (unity required NDK r19) preferences의 external tools에서 안드로이드 NDK의 설치 경로를 설정했을때 아래와 같은 메시지가 표시된다면 현재 유니티 에디터의 버전이 현재 설치되어있는 NDK의 버전을 지원하지않기때문이다. 1)예에서 유니티 버전 2020.3.0f1을 사용중이며 설치되어있는 NDK의 버전은 ndk r18(NDK 18.1.5063045)이다. 2)유니티가 요구하는 NDK 버전을 확인한다 unity required NDK r19(19.0.5232133) 3)아래 개발자 안드로이드 웹사이트에서 최신 버전의 NDK를 다운로드한다 https://developer.android.com/ndk/downloads?hl..
유니티 안드로이드 빌드4 - 삼성 갤럭시에 apk 파일 설치하기 1)유니티 에디터에서 빌드를 완료하면 생성한 apk파일을 확인할수있다. 2)컴퓨터에 모바일 장치를 연결하고 폴더로 이동한다. 예에서는 삼성 갤럭시를 이용하였다. 3)phone 폴더에 새로운 폴더를 생성한다. 4)예에서 새로 생성한 폴더의 이름을 apkinstall로 설정하였다. 5)apk파일을 해당 폴더에 복사한다. 6)갤럭시 홈 화면에서 내 파일 앱으로 이동한다. 7)내장 메모리로 이동한다. 8)새로 생성한 폴더(apkinstall)로 이동한다. 9)해당 폴더에서 복사한 apk파일을 선택한다. 10)애플리케이션 설치를 진행한다. 11)play 프로텍트에 의해 차단됨 대화상자에서 무시하고 설치를 진행한다. 12)앱이 설치되면 완료한다. 13..
유니티 안드로이드 빌드3 - 프로젝트 player settings, 최종빌드하기 (company name, product name, minimum API level, scripting backend, build) 1)project settings의 player에서 회사명, 상품명(company name, product name)을 입력한다. 2)identification의 package name은 이전에 입력한 company name, product name으로 설정되어있는것을 확인할수있다. 3)최소 API 수준(minimum API level)을 선택한다. 4)scripting backend에서 mono 또는 IL2CPP를 선택한다. 5)64비트 아키텍처를 지원해야한다면 IL2CPP를 선택하고 하단의 ..
유니티 안드로이드 빌드2 - sdk, ndk, jdk 설치(NVIDIA CodeWorks for Android) 엔비디아의 CodeWorks 툴을 사용하여 유니티에 SDK, NDK, JDK를 설치하는 방법 1)아래 엔비디아 웹사이트로 이동하여 NVIDIA CodeWorks for Android를 다운로드한다. 2)다운로드 버전을 선택한다. 예에서 윈도우 버전을 선택하고 다운로드하였다. 3)NVIDIA CodeWorks for Android 설치를 진행한다. 해당 설치 프로그램은 안드로이드 개발에 필요한 몇가지 소프트웨어 패키지를 설치하고 개발 시스템을 구성한다. 4)설치경로를 기본으로 설정하고 다음으로 이동한다. 5)설치 예정인 패키지 목록을 표시한다. 목록에서 안드로이드 sdk, ndk, jdk와 설치..
유니티 안드로이드 빌드1 - 프로젝트를 안드로이드 플랫폼으로 전환하기 1)build settings으로 이동하고 플랫폼 목록에서 안드로이드(android)를 선택한다. 에디터에 대한 android build support 모듈이 설치되어있지않으면 하단의 switch platform버튼이 비활성화된다. 2)이 경우 install with unity hub에서 모듈 설치를 진행할수있다. 3)android build support를 선택하고 확인하면 해당 버전의 에디터에 대한 android build support 모듈 설치를 진행한다. 4)모듈이 정상적으로 설치되면 안드로이드의 추가 빌드옵션이 표시되고 switch platform 버튼이 활성화된다. switch platform을 클릭하면 프로젝트를 안드로이..
유니티 URP에서 legacy shader 사용하지않음 권장 1)아래 예에서 프로젝트는 렌더파이프라인으로 URP를 사용하고있다. 2)씬에 legacy shader를 사용하는 오브젝트를 추가하였다. 3)URP 프로젝트에서 일부 legacy shader를 사용하는 오브젝트들은 씬 또는 런타임에서 정상적으로 렌더링된다. 4)하지만 레거시 셰이더는 SRP Batcher와 GPU 인스턴싱(일부 셰이더)을 지원하지않음으로 최적화에 한계가 있어 권장하지않는다. 재질의 select shader를 선택한다. 5)해당 셰이더가 SRP Batcher와 호환되지않음을 확인할수있다(not compatible) SRP Batcher는 씬에서 CPU 렌더링 속도를 높이는 렌더링 루프로 SRP 프로젝트에서 사용가능하다(URP, HD..
유니티 onClick.AddListener에서 함수의 파라미터 전달 문제 1)예에서 아래와 같이 캔버스에 버튼을 구성하였다. 2)아래 스크립트의 for구문에서 순차적으로 버튼을 클릭했을때 호출되는 함수를 추가하고 함수에 전달하는 인수로 iteration 변수를 설정하였다. 3)게임을 시작하고 순차적으로 버튼을 클릭하면 의도한 iteration 변수를 출력하지않는것을 확인할수있다. 4)for 구문 내에서 임시적으로 정수형 변수를 선언하고 이 변수를 인수로 전달한다. 5)게임을 시작하고 순차적으로 버튼을 클릭하면 정상적으로 출력한다.
유니티 애니메이션 뷰에서 클립의 속성 목록이 노란색으로 표시되는 경우 1)씬에 애니메이션을 사용하는 모델을 추가하였다. 2)animation view에서 게임 오브젝트가 사용하는 애니메이션(우측 타임라인) 및 해당 애니메이션에 의해 제어되는 게임 오브젝트, 속성 목록(좌측)을 확인할수있다. 3)씬에서 게임 오브젝트의 이름을 변경하면 animation view에서 해당 게임 오브젝트 및 하위 게임 오브젝트의 속성 목록이 노란색으로 표시되며 애니메이션이 동작하지않는다(the gameobject or component is missing) 4)기존의 이름으로 재설정하면 정상적으로 목록을 표시하고 애니메이션이 동작한다. 5)이와같이 계층에 있는 게임 오브젝트의 이름과 해당 게임 오브젝트에 대한 애니메이션 속성의..