Unity InputField에서 입력 이벤트를 구현하는 이벤트 핸들링 메소드는 두 가지 종류가 있다. onEndEdit / onSubmit 두 방법에는 아래와 같은 차이점이 있으니, 원하는 방식으로 이벤트 메소드를 구현하면된다. 1. onEndEdit - 편집이 끝났을 때 호출되는 이벤트 메소드 2. onSubmit - 편집을 끝내고 직접 입력 버튼(Keyboard Enter)을 눌렀을 때 호출되는 이벤트 메소드 onEndEdit을 사용할 경우, 모바일 환경에서 키패드 입력 창이 닫히면 호출이 되는 현상이 있으므로 증분검사를 하는 케이스가 아니면, onSubmit을 사용하는것이 바람직해보인다. Sample Code using UnityEngine; using System.Collections; usin..
유니티에서 로컬 폴더에 접근해 폴더 안의 파일까지 모두 지우고 싶을 때, 오류가 발생하며 정상 작동하지 않는 경우가 있다. 이럴 때는 디렉토리의 모든 파일을 먼저 지운 후 폴더를 지우는 코드를 실행하면 정상적으로 삭제를 진행할 수 있다. 아래 코드에 path 변수에 원하는 디렉토리 경로를 지정할 경우 정상 삭제되는 모습을 확인할 수 있다. string path = "path" foreach (string directory in Directory.GetDirectories(path)) { try { Directory.Delete(directory, true); } catch (IOException) { Directory.Delete(directory, true); } catch (UnauthorizedAc..
Unity Button UI에는 Navigation이라는 Option이 존재[None, Everything, Horizontal, Vertical, Automatic, Explicit] 이벤트에 따른 다른 Button UI의 활성화를 도와주는 기능 - Horizontal : ←, → 방향키에 반응 - Vertical : ↑, ↓ 방향키에 반응 - Automatic : 주변의 UI에 자동으로 반응 - Explicit : 키보드 방향별로, 버튼별로 매핑 가능 Automatic으로 설정할 경우 원하지않는 활성화가 일어날 수 있음 3D 프로그램에 2D UI를 고정적으로 사용하는 경우에는 꼭 침착하게 모든 Button UI에 Navigation을 None으로 바꿔주는 것이 좋을 듯 함
Unity와 VSCode를 연결해서 사용하다보면 간간히 Asset Store에서 Import한 Asset의 Namespace를 못찾는 오류가 발생한다. 이때 아래와 같이 추가세팅을 진행하면, Import한 Asset의 Namespace를 잘 찾을 수 있게 된다. 1. Unity VSCode 디버깅 설정 - 에셋 스토어에서 VSCode Asset을 Import한다. 2. Unity Preference 설정 - VSCode 에셋을 Import하면 Edit-Preferences에 VSCode 항목이 추가되며, 아래와 같은 옵션을 활성화한다. * Enable Integration * Use Unity Debugger * Enable Auto Open * Revert Script Editor on Unity * ..
# Unity에서 모바일(Android, iOS)로 개발을 진행하다보면, TMP_InputField에서 패스워드로 설정 시 미작동하는 오류가 간간히 발생함 # 해결방법은 간단함 1. 프로젝트 폴더의 TMP_InputField.cs를 연다 2. ActivateInputFieldInternal() 함수를 찾는다. 3. 아래 코드를 찾는다 if (shouldHideSoftKeyboard == false && m_ReadOnly == false && contentType != ContentType.Custom) 4. 아래 코드로 바꾼다 if (shouldHideSoftKeyboard == false && m_ReadOnly == false) 5. 테스트 해보면 모바일에서 키보드가 잘 올라오는것을 확인할 수 있다
계층적 구조를 가지는 modeling 파일이 존재할 경우에, 모든 하위 Transform에 접근해야하는 경우가 있다. GameObject a ㄴ b ㄴ c ㄴ d 그럴 때는 해당 코드를 사용하면 모든 하위 Transform에 손쉽게 접근할 수 있다. public void findAllChildren(GameObject g) { Transform[] allChildren = g.GetComponentsInChildren(); foreach(Transform child in allChildren) { //수행할 함수 작성 //Ex. AddComponent child.gameObject.AddComponent(); } }