유니티에서 Instantiate 함수로 게임 오브젝트 복제하기Object.Instantiate - 오브젝트를 복제하는 함수로 유니티 기술문서에서 다양한 용법을 확인할수있다(https://docs.unity3d.com/ScriptReference/Object.Instantiate.html)Instantiate 함수는 오리지날을 복제하여 클론을 리턴한다. 기본적으로 에디터에서 게임 오브젝트를 duplicate(ctrl+d)하는것과 동일하며 인수를 추가하면 선택적으로 위치 및 회전을 명시할수있다.1)씬에 empty 게임오브젝트를 생성하였다.2)이 게임오브젝트에 아래 스크립트를 추가한다. Instantiate(prefab); 스크립트에서 참조하는 프리팹을 복제한다. Instantiate(prefab, new V..
유니티 스크립팅 - 원하는 타임에 함수를 호출, Invoke 함수사용하기 Invoke함수는 원하는 타임에 함수를 호출하는 함수이다. 아래 예에서 게임을 시작하면 3초후에 printTime함수를 호출한다.2)InvokeRepeating함수는 원하는 타임에 함수를 호출하고 설정한 타임 간격으로 반복한다. 아래 예에서 게임을 시작하면 3초후에 printTime함수를 호출하고 3초마다 반복적으로 함수를 호출한다.
유니티에서 GetComponent함수 사용하기GetComponent();게임 오브젝트의 컴포넌트를 가져오는 함수이다. type은 가져올 컴포넌트의 타입이다. 1)씬에 게임 오브젝트 cube를 생성한다.2)오브젝트에 두개의 스크립트를 추가한다(CubeScript, OtherCubeScript)3)맴버 변수를 선언하고 값을 대입한 사용자 정의 클래스(OtherCubeScript)4)또다른 스크립트(CubeScript)에서 위에서 정의한 class를 저장하기위해 참조 변수를 선언한다(private OtherCubeScript a;) awake함수에서 OtherCubeScript타입의 컴포넌트를 가져와 저장하고 맴버 변수의 값을 출력한다. GetComponent
유니티에서 DontDestroyOnLoad함수를 이용하여 씬을 로드할때 사라지지않는 오브젝트 만들기일반적으로 새로운 씬을 로드하면 기존의 모든 오브젝트들을 제거하고 새로운 씬의 오브젝트를 로드한다. DontDestroyOnLoad함수를 이용하면 특정 타겟 오브젝트가 모든 씬에 걸쳐 존재하도록 할수있다.1)테스트를 위해서 씬에 empty gameobject를 생성하고 스크립트를 추가한다.2)DontDestroyOnLoad 함수의 인수로 게임 오브젝트를 추가하였다.3)게임을 플레이하면 awake함수에서 이 오브젝트를 새로운 씬을 로드해도 제거되지않는 오브젝트로 만든다.4)게임을 플레이하고 5초후에 새로운 씬 scene_02를 로드하였고 이전 씬의 게임 오브젝트가 제거되지않았다.
unity3D에서 스크립트를 작성하여 공 회전시키기게임 오브젝트에 스크립트를 추가하고 단순한 코드를 작성하여 공을 회전시키는 예제이다.1)씬에 스피어를 생성하였다.2)이 게임 오브젝트에 새로운 스크립트를 추가한다. add component에서 new script를 추가한다.3)스크립트의 이름을 설정하고 c#언어를 선택하고 create and add를 클릭하면 스크립트를 생성한다. 4)게임 오브젝트에 추가된 스크립트를 더블 클릭하면 해당 스크립트를 에디터에서 열기한다.5)스크립트의 이름과 class 이름은 동일 해야한다.6)회전속도를 저장할 변수를 선언하고 업데이트 함수에 한줄의 코드를 작성하였다. 아래에서 public으로 선언한 전역변수 degreePerSecond는 class 외부에서 접근 가능하며 유..
유니티의 grid layout group 사용하기게임의 미션 및 레벨 선택 메뉴의 디자인에 사용할수있는 grid layout group 기본 사용법1)캔버스에 panel를 생성하였다.2)panel의 적절한 사이즈를 설정한다.3)panel에 그리드 레이아웃 그룹 컴포넌트를 추가한다.4)panel의 하위에 버튼 오브젝트를 생성하고 복사한다.5)버튼 오브젝트들은 부모 오브젝트인 panel에서 설정한 그리드 레이아웃에 나열된다.6)버튼 오브젝트의 transform은 사용자가 직접 수정할수없다.7)grid layout group의 속성값들을 변경시켜서 메뉴의 레이아웃을 설정한다.padding은 pannel에서 레이아웃 그룹의 좌우상하 여백을 만든다. cell size는 자식 오브젝트인 버튼의 사이즈를 설정하고 s..
유니티에서 씬의 모든 라이트 끄기1)씬의 라이트를 비활성화 시키거나 intensity의 수치를 0으로 만들어도2)오브젝트는 빛의 영향을 받고있는것처럼 보이는데 이것은 씬의 엠비언트와 reflection 때문이다. 3)라이팅 윈도우의 scene탭에서 ambient와 reflection의 intensity 수치를 0으로만든다.
유니티3D - 빛의 영향을 받지않는 unlit 쉐이더unlit 쉐이더는 문자 그대로 빛의 영향을 받지 않는, 씬의 라이트와 엠비언트의 영향을 받지않는 쉐이더이다.1)기본 standard 쉐이더는 씬의 라이트에 의한 스페큘러 및 표면 그림자를 반영한다.2)또 lighting윈도우의 scene탭에서 설정한 ambient의 영향을 받는다.3)재질의 쉐이더를 unlit타입(color)으로 변경해보았다.4)오브젝트는 쉐이더에서 설정한 메인 컬러만 표시한다.5)씬의 라이트와 엠비언트로부터 영향을 받지않는것을 확인할수있다.6)마찬가지로 unlit texture쉐이더는 빛의 영향을 받지않으며 텍스쳐 이미지의 색상만 표시한다.
유니티에서 3D 텍스트 해상도 높이기1)씬에 3D TEXT 오브젝트를 추가한다.2)기본적으로 3D TEXT의 해상도가 매우 낮게 설정되어있는것을 확인할수있다.3)폰트 사이즈 수치를 높인후에 scale를 줄이는 방식으로 해결할수있다.
유니티에서 3D 프로젝트를 2D로 변경하기 1)일반적으로 프로젝트를 생성할때 3D 또는 2D타입을 선택한다. 예에서 3D 프로젝트를 생성하였다. 2)프로젝트를 시작하면 카메라와 라이트가 씬을 구성한다. 3)프로젝트를 생성한 이후에 3D에서 2D 또는 2D에서 3D로 변경하고싶다면 상단의 edit메뉴에서 project settings의 editor를 선택한다. 4)editor settings에서 default behaviour mode를 2D로 변경한다. 5)새로운 씬을 생성하고 더블 클릭해서 로드하면 라이트없이 오직 카메라로 2D 씬을 구성한다. 6)카메라 타입 또한 perspective가 아닌 orthographic으로 설정되어있는것을 확인할수있다. 7)씬뷰를 2D모드로 설정하려면 아래 이미지에서 표시..
유니티 기초 사용법 몇가지 - gizmo, snap, vertex snap, frame selected1)유니티를 실행하고 프로젝트의 이름, 프로젝트 폴더 위치, 3D 및 2D를 설정하고 create project를 클릭하면 새 프로젝트를 생성한다.2)씬에 생성한 두개의 오브젝트를 선택하였다. 아래 표시한 center는 선택한 오브젝트들의 중앙에 gizmo를 표시한다.3)클릭해서 pivot으로 변경하면 gizmo는 마지막으로 선택한 오브젝트에 표시한다.4)씬뷰에서 우측 상단에 위치한 viewcube의 큐브 모양을 클릭하면 씬뷰의 카메라 타입을 orthographic 또는 perpective으로 전환한다.5)hierarchy에서 오브젝트를 더블 클릭하면 선택한 오브젝트를 확대하여 보여준다. 상단의 edit..