Application.isPlaying은 빌드된 게임 혹은 에디터의 플레이 모드(에디터에서 실행시키는 것)일 때 true를 반환한다. Application.isEditor는 에디터에서 실행되는지의 여부를 반환한다. Application.isPlaying Application.isEditor 그리고 Application.isEditor는 #...
Odin Inspector의 PropertyOrder 관련 짧은 팁
Odin Inspector의 PropertyOrder를 사용하면 인스펙터에서 프로퍼티가 출력되는 순서를 지정할 수 있다. 유니티에서는 상속된 클래스의 프로퍼티가 인스펙터에서 보이는 순서를 지정할 수 없어서 불편할 때가 많은데 PropertyOrder가 이 문제를 해결해준다. 이때, PropertyOrder가 설정되지 않은 일반 프로퍼티의 Orde...
ScriptableObject를 참조하는 객체의 JSON Serialize
Unity의 ScriptableObject는 특정한 아이템 유형 등을 정의할 때 Enum처럼 사용할 수 있다. 이는 유니티에서 공식적으로 권장하는 사용 방식이다. 위의 인벤토리 예시는 유니티에서 제공하는 협업과 코딩 측면에서 유용한 스크립터블 오브젝트 활용법 6가지라는 강좌에 있는 내용이다. 여기까지는 괜찮지만, 문제는 이 인벤토리 정보를 저장...
UI Text, TextMeshPro, TextCore?
최근에 유니티 6을 사용해봤는데, 생성할 수 있는 객체 중에 TextMeshpro와 TextCore라는 게 나눠져 있었다. TextMeshpro는 현 시점(유니티 6 프리뷰)에서는 별도의 패키지지만 사용할 때 자동으로 다운받는 창이 뜨는 구조였고, 기존 UI Text는 역시 남아 있지만 legacy로 분류되어 있다. 이게 뭔지 몰라서 찾아본 바로...
Spine에서 실시간으로 material 변경하기
유니티 게임개발 시 많이 사용되는 Spine을 쓰던 도중, 스파인 애니메이션 중에 실시간으로 메테리얼을 교체해야 하는 이슈가 있었다. 맨 처음에는 평범하게 유니티 Mesh Renderer에서 직접 material을 변경해봤다. obj.GetComponent<MeshRenderer>().material = newMaterial; // 단일...
C#에서 equals와 ==의 차이
C#에서 특정한 개체가 동일한지를 체크하는 방법은 object.equals()를 사용하는 것과 ==연산자를 사용하는 것 두 가지가 있다. 그리고 이 둘은 따로 오버라이딩이 가능하다. 이 둘은 얼핏 보면 같은 기능처럼 보이지만, 사실 다른 기능이다. C# 에서의 문자열 비교, == or Equals? C# difference betwe...
Chirpy Theme에서 카테고리 및 태그에 특수문자 사용 문제
내가 Github Blog에서 사용하는 Chirpy Theme는 포스트에 카테고리와 태그를 지정하면 사이트 빌드 단계에서 카테고리와 태그 페이지를 생성해준다. 이게 블로그를 그나마 요즘(?) 블로그답게 만들어주는 중요한 기능인데, 문제는 태그나 카테고리에 특수문자를 넣으면 카테고리 페이지에서는 그걸 반영하지만, 해당 페이지로 가는 링크 주소는 특수문...
using과 try catch finally의 차이점
파일 관리 코드를 짜다가 using과 try-finally구문이 기능적으로 비슷하다는 생각이 들어서 한번 구글링을 해봤다. 그리고 재미있는 사실을 알게 되었는데, using과 try-finally는 동일한 기능일 뿐 아니라 컴파일러 레벨에서도 동일한 결과물을 작성한다는 것이다. 대신 using은 블록이 끝날 때 자체적으로 Dispose를 호출하고 이를...
Unity에서 복잡한 Prefab의 Bound를 얻는 방법
사용중인 에셋이 객체의 Bound를 얻는 부분을 다음과 같이 처리하고 있었다. Mesh mesh = voxel.mesh; Bound bounds = mesh.Bounds; 이렇게 하면 prefab에 자식 오브젝트가 붙어있거거나 scale이 조정되어 있는 경우 제대로 인식할 수 없어 복잡한 프리팹의 경우 bound가 이상하게 잡히게 된다. 이런 ...
SourceTree에서 failed code 128: fatal unsafe repository 에러 해결법
이번에 PC를 교체하고 SourceTree를 새로 깔았는데 이 블로그가 저장된 리포지터리를 등록하려고 하니 에러가 발생했다. 나는 github 블로그를 시놀로지 NAS에서 돌리기 때문에 이 블로그의 소스가 있는 리포지터리는 네트워크 드라이브(Z:)에 있었는데, 이게 뭔가 보안 문제를 일으키는 거라는 추측은 쉽게 할 수 있었다. 하지만 전에는 멀...