유니티에서 버튼이 반응하지않는경우 button의 영역에 같이 존재하는 다른 ui 오브젝트들의 raycast에 의하여 런타임에서 사용자 인풋에의해 버튼이 반응하지않는 경우 1)아래 예에서 씬에 canvas를 생성하고 button, panel를 구성하였다. 2)panel을 hierarchy에서 button의 하단에 위치시켰다. button과 panel이 같은 영역에 존재하면 런타임에서 버튼은 정상적으로 반응하지않는다. 3)panel의 image 컴포넌트에서 raycast target이 체크되어있는것을 확인할수있다. 4)raycast target을 체크해제하면 해당 오브젝트는 레이캐스팅 대상에서 제외된다. 5)런타임에서 버튼이 정상적으로 반응하는것을 확인할수있다.
유니티 URP에서 오버레이(overlay) 카메라 사용하기 오버레이 카메라(overlay camera)는 다른 카메라의 출력 위에 뷰를 렌더링하는 카메라이다. 오버레이 카메라를 사용하여 2D UI에 존재하는 3D 개체 또는 2D UI 위에 존재하는 3D개체를 렌더링할수있다. 1)씬에 캔버스와 ui를 생성하였다. 2)씬에 새로운 3D 게임오브젝트와 카메라를 생성한다. 3)game view에서 3D 오브젝트 위에 UI가 표시되는것을 확인할수있다. 4)현재 캔버스는 render mode가 screen space - overlay로 설정되어있는것을 확인할수있다. 5)screen space - camera로 변경하고 render camera에 메인 카메라를 설정한다. 6)메인 카메라(main camera)의 re..
유니티 URP 에서 custom render passes를 사용하여 아웃라인 렌더링하기 URP의 custom render passes와 custom shader를 사용하여 캐릭터의 아웃라인을 렌더링하는방법이다. 유니티에서 제공하는 샘플 커스텀 쉐이더(ToonBasicOutline.shader)를 사용하였다. gameobject layer 1)씬에 아웃라인을 렌더링할 캐릭터 및 게임오브젝트를 추가한다. 2)게임 오브젝트의 재질을 설정한다. 예에서 URP의 Lit 쉐이더를 사용하는 재질을 설정하였다. 3)게임 오브젝트의 레이어를 설정한다. 새로운 레이어를 추가하려면 인스펙터에서 layer의 add layer로 이동한다. 4)새로운 레이어를 추가하고 게임오브젝트에 해당 레이어를 설정한다. custom shad..
유니티에서 객체를 바이너리로 저장하기(BinaryFormatter) 마이크로소프트 공식 설명서에서 BinaryFormatter을 사용한 데이터처리는 보안에 취약하기 때문에 사용하지않을것을 권고하고있다. https://docs.microsoft.com/ko-kr/dotnet/standard/serialization/binaryformatter-security-guide 아래는 예제로써 BinaryFormatter 클래스를 사용하여 객체를 이진형식 및 바이너리(binary)로 직렬화하고 파일을 저장 또는 바이너리 파일을 역직렬화하여 객체를 생성하는 방법이다. 1)예에서 다음과 같이 클래스를 정의하였다. 2)클래스에 [Serializable] 어트리뷰트를 지정한다. 3)클래스의 객체를 생성한다. 4)Binar..
유니티에서 사용자 정의 클래스 만들기(직렬화, serializable) [serializable] 어트리뷰트를 사용하여 클래스를 직렬화하는 방법 1)아래 예에서 test 클래스를 정의하였다. 2)인스펙터에서 해당 클래스의 필드가 표시되지않는다. 3)클래스에 [Serializable] 어트리뷰트를 지정한다. [Serializable]는 클래스 또는 구조체를 직렬화 할수 있음을 나타낸다. test 클래스 유형의 private 변수를 선언하고 [SerializeField] 어트리뷰트를 지정한다. 4)인스펙터에서 클래스의 필드가 정상적으로 표시되는것을 확인할수있다.
유니티의 특수 폴더(special folder)와 데이터경로(datapath) 유니티의 특수 폴더 https://docs.unity3d.com/Manual/SpecialFolders.html Unity - Manual: Special folder names Batching with the AssetDatabase Special folder names You can usually choose any name you like for the folders you create to organise your Unity project. However, there are folder names that Unity reserves for special purposes. For example, you must place..
유니티에서 객체를 xml 형식으로 변환 및 파일 저장하기 객체를 xml형식으로 직렬화 또는 xml형식에서 객체를 역직렬화하는 방법 1)예에서 xml형식으로 저장할 타입을 선언하였다. 2)XmlSerializer 클래스와 FileStream클래스를 사용하기 위하여 using 지시문으로 두개의 네임스페이스를 추가한다 using System.Xml.Serialization;, using System.IO; 3)XmlSerializer는 객체를 XML 형식으로 직렬화하고 XML 형식에서 객체를 역직렬화하는데 사용한다. 아래 스크립트에서 생성한 객체를 직렬화하고 지정된 Stream(FileStream)을 사용하여 XML 문서를 파일로 저장한다. 4)프로젝트의 해당 경로에서 새로 생성한 xml 파일을 확인할수있다...
유니티에서 객체를 json 형식으로 변환 및 파일 저장하기 오브젝트를 json 형식으로 변환하고 파일로 저장하기 또는 Json파일을 불러오기하여 데이터 생성하기 1)예에서 네가지 변수가 들어 있는 클래스를 정의하였다. 2)클래스의 오브젝트를 생성하고 JsonUtility.ToJson 함수에서 해당 오브젝트의 json 표현을 생성한다. 3)해당 오브젝트의 Json형식 문자열이 출력된것을 확인할수있다. 4)파일이름 및 경로를 설정하고 File.WriteAllText함수를 사용하여 파일을 저장한다. 5)해당 경로에서 Json파일이 생성된것을 확인할수있다. 6)텍스트 편집기에서 확인하면 데이터가 속성-값 쌍으로 표현되어있는것을 확인할수있다. 7)아래 예에서 JsonUtility.FromJson()함수를 사용하여..
유니티에서 Resources.Load 함수를 사용하여 에셋 로드하기Resource 폴더는 유니티가 특별한 목적으로 예약한 폴더 중 하나로 해당 폴더에 에셋을 위치시키면 load함수를 사용하여 불러오기할수있다.1)예에서 씬에 cube 오브젝트를 생성하였다. 2)cube 오브젝트의 프리팹을 생성하였다. 3)일반적으로 스크립트에서 게임오브젝트 타입의 변수를 선언하고 에디터에서 직접 참조시켜서 해당 오브젝트를 복제 및 생성할수있다. 4)게임을 시작하면 씬에 프리팹 게임오브젝트를 복제 및 생성한다. Resources.Load 함수를 사용한 방법5)프로젝트의 Assets 폴더 하위에 Resources 폴더를 생성한다. 6)Resources 폴더 하위에 런타임에 불러올 에셋들을 위치시킨다. 예에서 Resourc..
유니티 프로젝트 세팅 파일에서 태그, 레이어, sortinglayers 변경하기 TagManager.asset 파일에서 태그, 레이어, sortinglayers의 항목을 추가, 제거하고 순서를 변경하는 방법 1)인스펙터에서 add tag로 이동한다. 2)예에서 새로운 태그를 추가하였다. 3)게임오브젝트에 설정할수있는 태그 목록이 추가된것을 확인할수있다. 4)일반적으로 태그 목록에서 태그 항목을 선택하고 제거할수있다. 5)실행중인 유니티를 종료하고 프로젝트의 ProjectSettings 폴더로 이동한다. 6)텍스트편집기에서 TagManager.asset 파일을 열기한다. 여기에서 사용자가 에디터에서 추가한 태그, 레이어, sortingslayers 목록을 확인할수있다. 태그(tags) 목록을 확인한다. (..
유니티에서 manifest 파일을 수정하여 패키지 설치하기 manifest.json 파일의 dependencies 목록에 git URL을 추가하여 패키지를 설치하는 방법 프로젝트에서 git 패키지를 사용하려면 git 클라이언트가 컴퓨터에 설치되어있고 시스템 환경 변수 path에 git.exe파일의 경로가 추가되어있어야한다. 시스템 환경 변수 path에 git.exe파일 경로 추가하기 1)유니티 프로젝트의 Packages 폴더 하위에서 manifest.json 파일을 확인할수있다. 2)텍스트 편집기에서 manifest.json 파일을 열기한다. 3)dependencies는 프로젝트에서 이용 가능한 패키지 목록을 의미한다. 4)dependencies 목록에 설치하려는 패키지의 저장소 git URL을 추가한다..
유니티에서 git URL를 사용하여 패키지 설치하기 원격 서버의 깃 저장소에서 패키지를 가져와 설치하는방법(add package from git URL) 예에서 깃허브와 깃허브의 GUI 프로그램인 깃허브 데스크톱을 사용하였다. 1)깃허브데스크톱 및 프로젝트의 환경이 올바르게 구성되어있는지 확인한다. 2)깃허브의 저장소에서 URL를 복사한다. 3)패키지 관리자에서 add package from git URL로 이동한다. 3)복사한 URL 및 유효한 깃 URL을 입력하고 add를 클릭한다. 4)서버로부터 패키지를 다운로드하고 설치를 진행한다. 5)설치가 완료되면 패키지 관리자 목록에 추가되며 프로젝트의 패키지 폴더에서 확인할수있다. https://docs.unity3d.com/Manual/upm-ui-git..