Unity가 편한 개발 엔진이라고 아무런 기본 지식 없이 마냥 닥치는대로 하려다보니 이래저래 어려움이 많다.

이 포스팅에서는 Unity를 사용하기 전에 미리 알면 도움이 되는 기본 지식들에 대해서 다뤄 보자

  • SetParent 
    • 개인적으로 worldPositionStays 파라메터를 자주 잊거나 헷깔림
    • worldPositionStays 가 true일 경우. 자식이 되는 오브젝트의 월드 좌표는 변경되지 않는다(화면상으로 보기엔 그냥 그대로 있는것 같다는 말). 하지만 부모가 변경 되었으므로 로컬 좌표가 변경된다.
      예를 들어 부모가 없는 두 오브젝트(부모가 없다는 것은 월드 포지션과 로컬 포지션이 같다는 의미) 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 : https://blogs.unity3d.com/2015/05/06/an-introduction-to-ilcpp-internals/
    • Intermediate Language to CPP
  • 좌표계 : Unity uses a number of 2D coordinate spaces, most of which define X as increasing to the right, and Y increasing upwards. The one exception is in the GUI and GUILayout classes, where Y increases downwards.
  • Resources - http://docs.unity3d.com/ScriptReference/Resources.html
    • Assets 폴더 밑 어느 곳에라도 Resources 폴더를 만들고 asset들을 넣어두면 Resources.Load로 접근 가능
    • 개인적으로 Resources 폴더를 어디에 만들어야 할지 몰라 한참을 고생했었기에 기록에 남긴다.
    • Resources 디렉토리 밑에 스프라이트를 두면 SpritePacker로 아틀라스를 만들지 못한다.
  • GameObject - http://docs.unity3d.com/ScriptReference/GameObject.html
    • Unity scene 안에 있는 모든 것들의 베이스 클래스
  • 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 : Gizmos are used to give visual debugging or setup aids in the scene view
  • 애니메이션 종료 여부 알아 내기 - http://kukuta.tistory.com/181
  • svn 
  • Help with access/write files on Android : http://forum.unity3d.com/threads/help-with-access-write-files-on-android.72819/
  • 4.6 UI Text rect does not expand automatically
  • 유니티의 입력 값은 스크린 좌표 값인데 게임월드 상의 오브젝트를 다루려면 월드 좌표를 사용해야 한다. 이를 위해서 유니티에서는 ScreenToWorldPoint(http://docs.unity3d.com/ScriptReference/Camera.ScreenToWorldPoint.html) 함수를 제공한다.Event.current.mousePosition은 화면의 좌하단이 (0, 0)이다. 터치 입력과 같은 좌표계(화면 좌 상단이 0, 0)를 사용하는 Input.mousePosition(http://docs.unity3d.com/ScriptReference/Input-mousePosition.html)을 사용하자.
  • BoxCollider 를 설정하고 IsTrigger 옵션을 선택하면 OnCollisionXXX 대신 OnTriggerXXX 함수가 호출 된다. IsTrigger 셋팅이 되어있다면 오브젝트간 물리적 상호 작용은 없고 서로 겹칠때 알림만 온다.
  • 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
  • Dictionary 시리얼라이즈 : http://answers.unity3d.com/questions/460727/how-to-serialize-dictionary-with-unity-serializati.html
  • content size fitter : 부모 객체의 rect를 자식 객체들에 맞춰서 변경 시켜주는 역할. 하지만 자식에 Vertical Layout 혹은 Horizon Layout 같은 Layout이 붙어야 한다. 텍스트 같은 경우는 아마도 예외인것 같다.
  • JsonUtility - http://docs.unity3d.com/ScriptReference/JsonUtility.html
  • 스크립트 직렬화 - http://docs.unity3d.com/kr/current/Manual/script-Serialization.html
  • Application.OpenURL - https://docs.unity3d.com/kr/current/ScriptReference/Application.OpenURL.html
  • AudioListener.volumn - https://docs.unity3d.com/ScriptReference/AudioListener-volume.html


Posted by kukuta
TAG

댓글을 달아 주세요

  1. unisushi 2016.10.25 22:00  댓글주소  수정/삭제  댓글쓰기

    감사합니다 굳!