Unity

    Path.Combine

    Path.Combine시 두번째 파라미터가 슬러시("/")로 시작되면 앞 문자가 더해지지 않는다.

    동일한 유니티패키지를 Import Package했을 경우.

    동일한 유니티패키지를 Import Package했을 경우.

    Import Package시에 같은 패키지파일을 2번 임포트하면 어떻게 될까. Test.unitypackage를 임포트했다. Test.unitypackage를 다시 임포트한다. 변경된게 없으니 이미 모두 포함되어있다고 나온다. CanvasFacebookLoader.cs파일을 수정했다. 수정된 파일은 임포트 목록에 뜬다. 해당 파일을 삭제하거나 다른 위치에 옮겨도 동일하게 임포트 목록에 뜬다.

    Error building Player: Win32Exception: ApplicationName='javac.exe' 에러

    제목 그대로.유니티에서 빌드시Error building Player: Win32Exception: ApplicationName='javac.exe' ~~~라고 에러를 뱉어내는 것은 경로를 찾을 수 없기 때문에 나오는 것이다.환경변수를 통해 JAVA_HOME을 설정해 주도록 하자.자세한 방법은 http://okjsp.tistory.com/1165643255 참조.

    Temp\StaginArea\AndroidManifest.xml

    Temp\StaginArea\ 폴더를 확인해보면①AndroidManifest.xml과②AndroidManifest-main.xml 2개가 존재한다.①은 Assets\Plugins\Android\의 하위에 있는 모든 프로젝트의 AndroidManifest.xml을 종합한 파일이고②는 Assets\Plugins\Android\에만 있는 AndroidManifest.xml을 나타낸다. ①의 경우는 종합하면서 쓸데없는 태그나 내용은 알아서 삭제하며 정리해준다.

    NGUI 컴포넌트를 쓰는 게임오브젝트의 Layer

    NGUI컴포넌트가 add되어있는 게임오브젝트의 Layer는 무조건 UIRoot컴포넌트가 붙어있는 게임오브젝트가 속한 Layer로 자동지정된다. UIRoot - 레이어 defaultParentObject - 빈 게임오브젝트ㄴChildObject1 - UIButtonㄴChildObject2 - UIButton UIRoot가 default 레이어로 설정되어있다면 ParentObject는 NGUI 컴포넌트를 붙이지 않았으므로 Layer를 맘대로 바꿀 수 있는데, ChildObject1,2 같은 경우에는 NGUI컴포넌트이기 때문에 Layer를 아무리 바꾸려해도 프리팹을 apply혹은 씬을 save하면 UIRoot의 default 레이어로 자동 변경된다.

    activeSelf와 activeInHierarchy

    A.activeSelf : A.SetActive(bool)에 영향을 받는다.A.activeInHierarchy : A.SetActive(bool)에 따라 변하며, 또한 A의 부모가 있다면 부모의 SetActive(bool)에 영향을 받는다. 자신보다 부모상태를 먼저 따른다.부모가 SetActive(false)가 되면 자식은 activeSelf == true 더라도 activeInHierarchy == false가 되면서 OnDisable가 호출된다. 물론, Update나 OnGUI등은 동작하지 않는다. 참고 : http://docs.unity3d.com/Manual/UpgradeGuide3540.html

    원하는 Define에서만 Debug.Log 출력하기

    Debug.Log는 클래스명만 Debug일 뿐, 실제 서비스를 출시할 때도 삭제하지 않는 이상 살아있다.너무나 많은 Debug.Log들을 일일히 찾아 삭제할 수도 없고,이럴 때는 c#의 Conditional Attribute 기능을 이용하면 define에 따라 무시할 수 있다. 첨부된 파일을 Assets/Plugins 폴더에 넣는다.그리고 파일을 열어보면 Conditional Attribute에 Debug 로그가 출력될 Define을 지정해준다.해당 Define이 아니면 컴파일러에서 Debug를 무시하고 출력하지 않게 해준다. 추가적으로 Log함수안에 원하는대로 커스터마이징해서 Debug.Log를 활용할 수 있다. 참고 : https://gist.github.com/kimsama/4123043

    Perforce 업로드시 바인딩이 깨질 때

    프로젝트를 Perforce에 올린 후, 다른 곳에서 받아서 실행해보면 바인딩이 모두 깨져있다.(파일로 전달해도 바인딩이 깨져있지 않다)원인은 Meta파일에 있다.Edit-Project Settings-Editor에 Version Control이 Perforce로 되어있어야 Perforce에 맞는 Meta파일이생성되는데Hidden Meta Files로 되어있었기 때문에 Perforce에 올리는 순간 바인딩이 깨지는 것이다.