본문 바로가기

진리는어디에

Unity를 사용하기 전에 알아두면 좋은 기본 개념들

Unity가 편한 개발 엔진이라고 아무런 기본 지식 없이 마냥 닥치는대로 하려다보니 이래저래 어려움이 많다. 이 포스팅에서는 Unity를 사용하면서 개인적으로 계속 헷깔렸던 부분들을 정리 한다.

Transform.SetParent 의 worldPositionStays 인자

  • worldPositionStays 가 true일 경우 :
    SetParent시 자식이 되는 오브젝트의 월드 좌표는 변경되지 않는다(화면상으로 보기엔 그냥 그대로 있는것 같다는 말).
    하지만 부모가 변경 되었으므로 로컬 좌표가 변경된다(이것을 이해하기 위해서는 월드 좌표와 로컬 좌표의 개념을 알아야 한다. 하지만 나는 이미 알고 있으므로 이 포스트에서는 다루지 않는다).

    예를 들어 부모가 없는 두 오브젝트(부모가 없다는 것은 월드 포지션과 로컬 포지션이 같다는 의미) A가 (0, 1)에, 오브젝트 B가 (1, 0)에 있는 경우, SetParent 함수 호출시 worldPositionStays를 true로 하면 자식이 되는 오브젝트 B의 월드 포지션은 여전히 (1, 0)이고 부모와의 관계를 나타내는 로컬 포지션은 (1, -1)로 변경 된다(유니티 인스펙터에는 로컬 포지션이 표시된다).
  • worldPositionStatys가 false일 경우 :
    자식이 되는 오브젝트의 로컬 좌표 값을 새로운 부모와 그대로 유지한다. 오브젝트 B가  오브젝트 A의 자식이 되는 경우 B의 로컬 포지션(1, 0)은 그대로 유지되며 대신 월드 포지션이 변경 된다.

LLVM(Low Level Vritual Machine)

프로그램을 컴파일 타임, 링크 타임, 런타임 상황에서 프로그램의 작성 언어에 상관 없이 최적화를 쉽게 구현할 수 있도록 구성. LLVM으로 언어에 가상 기계를 생성, 가상 기계가 언어에 독립적인 최적화를 실행한다.

IL2CPP(Intermediate Language to CPP)

유니티 2차원 좌표계

    • 유니티는 x 축의 경우 왼쪽으로 갈수록 좌표 값이 감소, 오른쪽으로 갈수록 증가한다. y 축의 경우 아래쪽으로 갈수록 좌표 값이 감소, 위쪽으로 갈수록 증가 한다.
    • 단, GUI와 GUILayout의 경우, y 축이 내려갈수록 증가한다.

Resources

    • Assets 폴더 밑 어느 곳에라도 Resources 폴더를 만들고 asset들을 넣어두면 Resources.Load로 접근 가능
    • 개인적으로 Resources 폴더를 어디에 만들어야 할지 몰라 한참을 고생했었기에 기록에 남긴다.
    • Resources 디렉토리 밑에 스프라이트를 두면 SpritePacker로 아틀라스를 만들지 못한다.
    • http://docs.unity3d.com/ScriptReference/Resources.html

GameObject

Transform

  • http://docs.unity3d.com/ScriptReference/Transform.html
  • scene 안에 있는 모든 객체들이 가지고 있는 위치, 스케일, 회전 정보
  • transform은 부모 transform을 가질 수 있다
  • localPosition은 부모의 transform에 상대적 위치 정보
  • GetComponentXXX<T> 함수들을 잘 이용하면 객체들을 찾기가 쉬워진다.

RectTransform

  • http://docs.unity3d.com/ScriptReference/RectTransform.html
  • 주로 UI를 위해 사용 됨(아마도..)
  • 위치, 사이즈, 앵커, 피봇 관련 정보들을 담고 있음
  • sizeDelta : RectTransform의 앵커 기준 상대적 사이즈. 만일 앵커가 붙어 있다면 sizeDelta는 size와 동일하다. 만일 앵커가 부모의 각 네 코너에 맞춰져 있다면 sizeDelta는 부모의 사각형 대비 얼마나 크거나 작은지를 나타낸다.
  • rect : eg. rectTransform.rect.height 으로 RectTransform 객체의 높이를 가져 올 수 있다

Gizmo

애니메이션 종료 여부 알아 내기

SVN 연동시 무시 되어도 될 디렉토리와 파일 리스트

안드로이드에서 파일 read/write 하기

saving and loading player game data in unity 

  • http://www.sitepoint.com/saving-and-loading-player-game-data-in-unity/
  • http://gamedevelopment.tutsplus.com/tutorials/how-to-save-and-load-your-players-progress-in-unity--cms-20934

4.6 UI Text rect does not expand automatically

ScreenToWorldPoint

Touch Input Position

BoxCollider

  • BoxCollider 를 설정하고 IsTrigger 옵션을 선택하면 OnCollisionXXX 대신 OnTriggerXXX 함수가 호출 된다. IsTrigger 셋팅이 되어있다면 오브젝트간 물리적 상호 작용은 없고 서로 겹칠때 알림만 온다.

Dictionary 시리얼라이즈

content size fitter

부모 객체의 rect를 자식 객체들에 맞춰서 변경 시켜주는 역할. 하지만 자식에 Vertical Layout 혹은 Horizon Layout 같은 Layout이 붙어야 한다. 텍스트 같은 경우는 아마도 예외인것 같다.

JsonUtility

스크립트 직렬화

Application.OpenURL

AudioListener.volumn

마우스 클릭으로 객체 선택하기

유익한 글이었다면 공감(❤) 버튼 꾹!! 추가 문의 사항은 댓글로!!