반응형 유니티 공부158 Unity - raycast할때 tag가 잘 인식되지 않는 경우 raycast를 이용해서 tag를 인식하는데 어떤 tag는 잘 인식되고 어떤 tag는 잘 인식되지 않는 문제가 발생하였다. 01 원래 코드 collider.tag를 통해 충돌한 객체의 tag에 접근한 다음에 tag문자열을 직접 비교한다. if (hit.collider.tag == "example") 02 수정한 코드 compareTag를 사용하니까 잘 인식되었다. if (hit.collider.CompareTag("example")) Component.CompareTag 내부 최적화를 통해 효율적으로 tag비교를 한다고 한다. public bool CompareTag(string tag); 첫번째 코드와 두번째 코드 성능에는 크게 차이가 없지만 혹시 tag가 잘 인식되지 않을 경우 두 가지 방법을 다 사.. 2023. 7. 9. Unity - 3D GameObject를 버튼 처럼 사용하기 OnPointerClick과 OnMouseDown의 역할 차이 UI요소(버튼 등)의 클릭 이벤트 처리에는 OnPointerClick을 사용한다. OnMouseDown보다 복잡한 이벤트를 처리하고 사용자의 입력에 대한 응답에 특화되어 있다. UI요소가 아닌 경우(게임 오브젝트, 컨트롤러 등)에는 OnMouseDown을 사용한다. 보통 단순히 버튼이 눌렸을 때 실행되는 동작을 처리한다. 그러므로 GameObject를 버튼 처럼 사용하기 위해서 OnMouseDown을 사용할 것이다. 선택창과 관련된 코드 참조 Unity - 물체와 닿았을 때 선택창 띄우는 법 1. 선택창 UI만들기 2. 선택창 기능 구현을 위한 스크립트 작성하기 [SerializeField] TMP_Text promptText; // 선택창에.. 2023. 7. 7. Unity - 물체와 닿았을 때 선택창 띄우는 법 1. 선택창 UI만들기 2. 선택창 기능 구현을 위한 스크립트 작성하기 [SerializeField] TMP_Text promptText; // 선택창에서 표시될 내용 Action onYesSelected = null; // Yes를 선택했을 때 실행할 동작 01 텍스트 및 Yes 선택시 기능 설정 public void CreatePrompt(string message, Action onYesSelected) { // onYesSelected 매개변수에 전달된 Action을 현재 객체의 OnYesSelected에 전달 this.onYesSelected = onYesSelected; // promptText에 전달된 message값을 설정 promptText.text = message; } 02 Yes o.. 2023. 7. 6. Unity - Scene전환 후 Player가 직진만 하고 좌우, 회전 이동 안하는 오류 해결 방법(Quaternion.Slerp) Scene전환 후 Player가 직진만 하고 좌우 이동 및 회전을 안하는 오류가 발생한 경우 PlayerController.cs파일에서 Quaternion.Slerp을 사용했는지 확인해보자 Quaternion.Slerp과 FixedUpdate의 관계 Player이동과 회전부분을 FixedUpdate메서드안에서 이루어지도록 코드를 작성하였다. Quaternion.Slerp는 보간을 위해 시간에 따라 값이 변경되는 함수이기 때문에 FixedUpdate의 호출 빈도와 Quaternion.Slerp가 서로 충돌하여 예기치 못하는 문제가 발생할 수 있다. 결론 그러므로 FixedUpdate함수안에서 Quaternion.Slerp를 사용할때는 주의하자 Quaternion.Slerp을 굳이 사용하지 않아도 될 경우 .. 2023. 7. 6. Unity - RangeAttribute을 사용해서 범위 지정하기 RangeAttribute 변수에 대한 유효한 범위를 지정할 수 있다. [Range(1, 100)] public int percentFilled; percentFilled는 1에서 100사이의 값만 가질 수 있다. 2023. 7. 4. Unity - Grid Layout Group Grid Layout Group UI요소들을 일정한 간격으로 배열하여 레이아웃을 생성할 수 있다. Padding : 레이아웃의 Edge 간격 Spacing : Cell 사이의 간격 Start corner : 첫번째 Cell 시작되는 코너 (왼쪽 위, 오른쪽 위, 왼쪽 아래, 오른쪽 아래) Start Axis : 레이아웃이 행 또는 열로 시작할지 설정 Constraint : 레이아웃이 Cell의 크기를 제한할지 여부 설정 버튼을 누르면 Cell이 생기는 간단한 예제 코드 public Button addButton; public GameObject gridItemPrefab; public GridLayoutGroup gridLayoutGroup; public void OnClick() { // gridIte.. 2023. 6. 21. 이전 1 ··· 12 13 14 15 16 17 18 ··· 27 다음 반응형