Programing 93

[Unity] 스크롤뷰 만들기

Hierarchy 뷰에서 우클릭 UI > Scroll View로 스크롤뷰 오브젝트를 생성해준다 이번엔 스크롤바를 쓰진 않을 것이기 때문에 함께 생성되는 스크롤바 2종류는 그냥 삭제해도 무방하다 Scroll View의 Scroll Rect 컴포넌트에서 몇 가지 조절을 해준다 Horizontal / Vertical 체크박스: 가로 / 세로 스크롤이 가능하게 할 것인지 여부 Movement Type - Unrestricted: 범위를 벗어나면 벗어나는 대로 스크롤된 상태를 그냥 유지함 - Elastic: 범위를 벗어나면 다시 범위 내로 돌아감(탄성 有, Elasticity는 이 탄성력을 조절하는 변수) - Clamped: 범위를 벗어나지 못하게 스크롤이 막힘 그리고 Content 오브젝트에 정렬 컴포넌트가 필..

[Unity] UI 요소 제외하고 클릭 이벤트 감지하기

https://docs.unity3d.com/kr/530/ScriptReference/EventSystems.EventSystem.IsPointerOverGameObject.html EventSystems.EventSystem-IsPointerOverGameObject - Unity 스크립팅 API Is the pointer with the given ID over an EventSystem object? docs.unity3d.com 유니티 공식 문서 if(Input.GetMouseButtonDown(0) && !EventSystem.current.IsPointerOverGameObject()) { SceneManager.LoadScene("Game"); } * GetMouseButtonDown은 터치..

[Coding] 싱글톤 패턴 구현 방법(2가지)

int instanceCount = FindObjectsOfType(GetType()).Length; if (instanceCount > 1) { gameObject.SetActive(false); Destroy(gameObject); } else { DontDestroyOnLoad(gameObject); } 1. 해당하는 오브젝트들의 길이를 재서 판단하는 방법 static AudioPlayer instance; if (instance != null) { gameObject.SetActive(false); Destroy(gameObject); } else { instance = this; DontDestroyOnLoad(gameObject); } 2. static 변수를 통한 싱글톤 패턴 구현 stati..

[Unity] 버튼 클릭해서 씬(Scene) 전환하기

1. File - Build Setting으로 들어가서 생성한 Scene들을 드래그 해주고 창을 닫는다 public void LoadGame() { SceneManager.LoadScene("Game"); } 2. 스크립트 상에서는 위와 같이 함수를 작성해주면 된다 씬의 이름을 명시적으로 작성해줘도 되고, build index 번호를 넣어줘도 된다 3. 버튼의 on click 부분에 스크립트를 담았던 오브젝트를 드래그한 다음, 해당 버튼을 클릭할 경우 실행시킬 함수를 지정한다 (스크립트를 드래그하는 것이 아니라 오브젝트를 드래그! 해당 오브젝트 내에 있는 스크립트를 선택)

[Unity] 화면 밖으로 오브젝트 이동 불가하게 만들기

그냥 단순히 input을 입력받아 이동시켜주다 보면 카메라 밖으로 벗어나게 되는 경우가 생기는데, 이를 방지하기 위한 방법 Vector2 minBounds; Vector2 maxBounds; void InitBounds() { Camera mainCamera = Camera.main; minBounds = mainCamera.ViewportToWorldPoint(new Vector2(0, 0)); maxBounds = mainCamera.ViewportToWorldPoint(new Vector2(1, 1)); } Vector2 형태의 minBounds와 maxBounds를 정의해 준 다음 InitBounds 함수에서 이를 초기화해준다 (Start 함수에서 실행) main 카메라가 비추고 있는 곳의 좌측 ..

[Unity] New Input System 사용하기

1. Window - Pakage Manager에 들어가서 Input System을 install 해준다 2. 오브젝트에 Player Input 컴포넌트를 추가해준다 3. Create Actions 버튼을 눌러 새로운 Action Asset을 생성해 주고, Actions 필드에 해당 에셋을 넣어준다 4. Open Input Settings 버튼을 누르고, Create settings asset 버튼을 눌러준다 여기까지 하면 설정 끝 코드에서 해당 메소드들을 이용해서 작성해주면 된다 추가적인 Input을 생성하려면 아까 만들어두었던 input action asset을 열어서 최상단 + 버튼을 눌러 새로운 액션을 추가해주고 키 바인딩을 해주면 된다 (Listen 버튼을 누르고 해당 키를 누르면 바로 해당 키..

[Unity] 오브젝트가 Destory되지 않게 하기

유니티에서는 Scene을 기준으로 한 씬에서 다른 씬으로 넘어갈 때 이전에 있던 씬의 오브젝트들을 전부 Destory하고 이동하게 되는데, 이 때 오브젝트가 destory되지 않게 하는 방법에 대해 알아보겠다 void Awake() { int numScenePersists = FindObjectsOfType().Length; if (numScenePersists > 1) { Destroy(gameObject); } else { DontDestroyOnLoad(gameObject); } } 싱글톤 패턴을 사용하여 DontDestoryOnLoad함수를 사용한다 해당 스크립트를 적용한 오브젝트 하위에 유지시킬 오브젝트들을 넣어주면 된다 싱글톤을 사용하지 않을 경우, DontDestoryOnLoad에 gameo..

[Unity] TMP(Text Mesh Pro) 폰트 변경하기

1. 원하는 폰트를 다운로드 한다 2. 유니티 Asset 내 폴더를 만들어 해당 폰트의 ttf/otf 파일을 넣어준다 3. Window - TextMeshPro - Font Asset Creator을 클릭한 후 Source Font File 위치에 다운받은 폰트를 넣어주고, 아래에 Generate Font Atlas 버튼을 클릭해준다 완료되면 맨 아래쪽에 있는 Save 버튼을 눌러서 적당한 폴더 위치에 저장해준다 끝! 폰트 설정은 인스펙터 창의 Font Asset에서 아까 만든 asset을 선택해주면 된다