본문 바로가기

UI

(4)
NGUI & UGUI NGUI (Next-Gen UI) UGUI가 나오기 이전부터 많은 개발사가 사용하던 플러그인 레퍼런스가 많다 다양한 크기의 화면에 최적화시키기 쉽다 (비교적) 정적인 화면에 최적화가 잘되어 있다. 동적 할당을 할 때 Sprite를 다시 그리기 때문에 비효율적 UGUI (Unity GUI) Unity Engine (4.6 이후부터) 내에서 제공하는 UI System 추가 구매 없이 바로 사용 가능 직관적인 UI 구성요소 간의 Depth 조절 Canvas 단위로 Draw Call이 관리됨 Sprite Atlas 관리 (폴더 단위로도 가능) Particle Rendering 문제가 있음 Tweening을 기본으로 지원하지 않음 소스 코드가 공개되어 있음 (https://bitbucket.org/Unity-Te..
[Unity/C#] UI에 마우스 이벤트 적용 시키기 Unity에서 기본적으로 제공하는 마우스 이벤트에 대한 콜백함수는 다음과 같다. 1. OnMouseDown - 오브젝트 위에서 마우스 왼쪽 버튼이 눌렸을 때 호출 2. OnMouseDrag - OnMouseDown이 일어나고 마우스 버튼을 때기 전까지 계속 호출됨 3. OnMouseEnter - 마우스가 오브젝트 위로 올라갔을 때 호출 4. OnMouseExit - 마우스가 오브젝트에서 벗어났을 때 호출 5. OnMouseOver - 마우스가 오브젝트 위에 있으면 계속 호출됨 6. OnMouseUp - OnMouseDown이 일어난 후에 마우스를 때면 호출 (OnMouseDown이 일어나지 않으면 호출되지 않음) 7. OnMouseUpAsButton - OnMouseDown이 호출된 오브젝트 위에 마우스..
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가 자동으로 생..