본문 바로가기

Unity

(17)
[Unity] GraphicRaycaster (UGUI 레이캐스팅 하기) 유니티의 UGUI는 Canvas의 Render Mode가 'Screen Space - Overlay' 일 경우 카메라를 사용하지 않고 렌더링 과정에서 그려진 오브젝트들 위에 덧그려진다. 이때 UI에 Raycast를 사용하려면 어떻게 해야 할 까? UGUI 오브젝트를 생성하면 자동으로 Canvas가 생성된다. 이때 Canvas를 살펴보면 Graphic Raycaster가 달려있는것을 볼 수 있다. 유니티 메뉴얼에 따르면 Graphic Raycaster는 캔버스 안을 검색하는 Raycaster이며, EventSystem이 이벤트를 검출하는 수단으로 사용된다는 것을 알 수 있다. 하지만 메뉴얼에는 Graphic Raycaster를 어떻게 써야하는지 스크립트 예시가 적혀있지 않다. 그래서 예시를 만들어 두려고 ..
[Unity] Google Play 로그인 에러 DllNotFoundException 종합본 : https://dobby-the-house-elf.tistory.com/202 [Unity] GooglePlayGames 로그인 에러 해결 logcat 이용하여 디버깅 하는법 : https://dobby-the-house-elf.tistory.com/192 [Unity] 유니티 모바일 디버깅 방법 (adb logcat 사용법) 안드로이드 APK 로 빌드된 유니티 프로젝트를 logcat을 이용해서 디버깅.. dobby-the-house-elf.tistory.com Google Play Console 로그인이 다음과 같은 에러 문구가 뜨며 오작동을 일으킬때. DllNotFoundException: Unable to load DLL 'gpg': The specified module could not..
[Unity/C#] UI에 마우스 이벤트 적용 시키기 Unity에서 기본적으로 제공하는 마우스 이벤트에 대한 콜백함수는 다음과 같다. 1. OnMouseDown - 오브젝트 위에서 마우스 왼쪽 버튼이 눌렸을 때 호출 2. OnMouseDrag - OnMouseDown이 일어나고 마우스 버튼을 때기 전까지 계속 호출됨 3. OnMouseEnter - 마우스가 오브젝트 위로 올라갔을 때 호출 4. OnMouseExit - 마우스가 오브젝트에서 벗어났을 때 호출 5. OnMouseOver - 마우스가 오브젝트 위에 있으면 계속 호출됨 6. OnMouseUp - OnMouseDown이 일어난 후에 마우스를 때면 호출 (OnMouseDown이 일어나지 않으면 호출되지 않음) 7. OnMouseUpAsButton - OnMouseDown이 호출된 오브젝트 위에 마우스..
Unity Android Google Play Authenticate ERROR (유니티 앱이 GooglePlay에 로그인 하지 못 할 때) 종합본 : https://dobby-the-house-elf.tistory.com/202 [Unity] GooglePlayGames 로그인 에러 해결 logcat 이용하여 디버깅 하는법 : https://dobby-the-house-elf.tistory.com/192 [Unity] 유니티 모바일 디버깅 방법 (adb logcat 사용법) 안드로이드 APK 로 빌드된 유니티 프로젝트를 logcat을 이용해서 디버깅.. dobby-the-house-elf.tistory.com 유니티 앱을 빌드 한 후에 코드에 문제가 없어도 GooglePlay 로그인이 안되는 경우가 종종 있다. 원인은 크게 3가지인데, 1. 유니티 프로젝트의 패키지 이름이 Google Play Console에 등록된 앱과 다를경우. 2. S..
Unity 현재 Scene 정보 가져오기 SceneManager.GetActiveScene(); // Scene 객체 가져오기 SceneManager.GetActiveScene().name; // 현제 Scene의 이름 SceneManager.GetActiveScene().buildIndex; // 현제 Scene의 인덱스넘버 Scene의 Index는 Build Settings에서 확인 할 수 있다. 참고로 다음 2개의 프로퍼티는 지금은 사용하지 않는다. Application.loadedLevel -현재 씬 인덱스 (int) Application.loadedLevelName - 현재 씬 이름 (string) 사용하면 다음과 같이 SceneManager를 사용하라고 나온다.
NGUI Button의 이미지를 변경 할때 주의사항 NGUI의 버튼에는 UISprite와 UIButton이 함께 들어있다. UISprite가 있는 오브젝트에 UIButton을 생성할 경우 UIButton의 normalSprite가 자동으로 UISprite의 spriteName으로 초기화 된다. hoverSprite, pressedSprite, disabledSprite는 따로 설정해주지 않으면 비어있으며, normalSprite가 default값이 된다. 다만 스크립트로 버튼의 Sprite를 바꾸려고 할 때, UISprtie의 spriteName을 변경할 경우, spriteName은 바뀌나, UIButton의 normalSprite는 바뀌지 않는다. 때문에, 버튼에 마우스를 올리거나 누르게 되면, 다시 원래의 이미지로 돌아오는 현상이 발생한다. 따라서 U..
UIPanel에 Rigidbody가 붙어있는 이유 Unity에서 UI를 다루면서 Panel에 Rigidbody가 붙어 있는 것을 알 수 있다. 이 Rigidbody는 지우더라도 자동으로 생성된다. 이유는 Unity가 Rigidbody가 있는 움직이는 오브젝트에 최적화 되어있기 때문이다. 움직이는 물체에 Rigidbody가 달려있지 않으면 성능이 떨어진다. UI는 Panel단위로 움직이는 경우가 많기 때문에 Rigidbody가 없으면 자동으로 생성시켜 주는 것이다. 때문에 UIPanel에 달려있는 Rigidbody는 no gravity에 IsKinematic옵션이 켜져있는것을 볼 수 있다. Rigidbody는 한 오브젝트가 2개를 가질 수 없기 때문에, 만약 UIRoot에 Rigidbody가 달려있을 경우 UIPanel에는 Rigidbody가 자동으로 생..
IEnumerator란 무엇인가?