Unity/유니티 엔진 동작 관련 맨텀 2023. 12. 22. 14:09
그냥 오브젝트의 transform.position을 변경할 경우 실행순서에따라 이동이 안되는 경우가 발생한다. 체감적으로 20% 비율정도라 버그처럼 보인다. 프레임마다 이전 position을 캐싱해서 path를 찾는 듯. NavmeshAgent의 Teleport(Vector3) 함수를 사용하거나 NavmeshAgent를 enable off 하고 이동 후 다시 on 하면 정상적으로 위치변경이 작동한다.
Unity/유니티 엔진 동작 관련 맨텀 2023. 4. 3. 21:44
레이어 마스크 관련해서는 프로젝트 초기에나 작업하기 때문에 가끔씩 상기시키지 않으면 헷갈리기 쉽다. LayerMask 구조체 유니티에 내장되어 있는 LayerMask 구조체는 내부를 뜯어보면 int 형을 감싸고 있는 래퍼 클래스일 뿐이다. 마스크는 int형에 비트연산을 사용하기 때문에 여러 레이어를 동시에 사용하려면 비트연산을 통해 구해야 한다. 레이어 마스크 구하기 public static int GetMask(params string[] layerNames) LayerMask.GetMask 함수를 통해서 마스크를 구할 수 있다. 앞서 말했듯 기본적으로 비크 마스크 연산이기 때문에 int mask = (1
Unity/유니티 엔진 동작 관련 맨텀 2023. 1. 9. 12:57
유니티의 Attribute 중에는 게임 시작 시 실행되는 메서드를 위한 RuntimeInitializeOnLoadMethod 가 존재한다. Unity Documentation : RuntimeInitializeOnLoadMethodAttribute https://docs.unity3d.com/ScriptReference/RuntimeInitializeOnLoadMethodAttribute.html RuntimeInitializeOnLoadMethod의 특징 1. 게임이 시작되면 자동으로 실행되며, 그 순서는 보장되지 않는다. 2. non-MonoBehaviour 클래스에서도 동작한다. 3. static 메서드에만 적용 가능하다. RuntimeInitializeOnLoadMethod의 프로퍼티 애트리뷰트에..
Unity/유니티 엔진 동작 관련 맨텀 2022. 12. 10. 01:24
#. 빌드 용량 최적화 에셋 번들이나 어드레서블을 사용하기 전인 개발 초기 단계에서는 Build Report 에셋을 통해 빌드에 포함된 리소스 파일의 용량을 확인한 후, 필요 없는 레퍼런스를 제거하고 불필요하게 사이즈가 크게 잡힌 텍스쳐들의 사이즈를 조정하는 작업이 가능했다. 2020.04.11 - [Unity/에셋스토어 추천] - Build Report / 빌드 후 세부 정보 분석 Build Report / 빌드 후 세부 정보 분석 https://assetstore.unity.com/packages/tools/utilities/build-report-tool-8162?aid=1101l7zGS Build Report Tool | 유틸리티 | Unity Asset Store Get the Build Rep..
Unity/유니티 엔진 동작 관련 맨텀 2022. 11. 21. 22:21
#. 특정 씬에서 시작하는 게임 환경 어느 씬 에서나 테스트할 수 있어야 한다!라는 개발 방침을 따르고 있지만 서버 등이 들어간 경우에는 시작 씬부터 초기화를 순차 진행하지 않으면 오류가 발생할 여지가 많다. 개별 테스트는 각 씬에서 진행하고 최종 테스트를 할 때는 시작 씬부터 시작해서 테스트하는 경우가 많다. 매번 시작씬 테스트를 하기 위해서 씬을 옮겨서 플레이하는 건 귀찮은 상황. 그런데 현재 씬과 관계없이 플레이모드 시작 씬을 커스텀할 수 있는 방법이있다. #. 시작 씬 설정하기 EditorSceneManager.playModeStartScene를 설정해주면 현재 씬과 관계없이 시작되는 씬을 설정할 수 있다. 물론 어느 상황에나 자동 설정되게 하기 위해 [InitializeOnLoad] 애트리뷰트 ..
Unity/유니티 엔진 동작 관련 맨텀 2022. 11. 20. 16:44
자동 구현 프로퍼티는 인스펙터에서 노출되지 않기 때문에 테스트하기에 불편한 경우가 많다. Debug 창에서 노출된다만, 커스텀 인스펙터를 사용하는 경우라면 일일이 Debug 창을 보기가 귀찮다. [field: SerializeField] 란? 자동 구현된 프로퍼티는 field: SerializeField 애트리뷰트로 인스펙터에 노출 가능하다. 중요한 점은 흔히 알려져있는 SerializeField랑은 다른 애트리뷰트임. [field: SerializeField] vs [SerializeField] 비교 비교를 위해 다음과 같이 SerializeField랑 field: SerializeField 를 같은 형식의 프로퍼티에 적용해본다. 사실 완전히 다른 애트리뷰트는 아니고, 내부 구현으로는 해당 프로퍼티 내..