본문 바로가기

반응형

Unity/Common

(12)
Unity(C#) 업캐스팅 후 베이스 클래스 판별하다가 생긴 오류 상황을 설명하자면 다음과 같다. 각 오브젝트들을 정보와 함께 불러들여야 했는데, DB같은거 얹힐 시간은 없어서 리소스 폴더에서 스크립터블 오브젝트로 불러온 후 필요한 자원들은 추가로 로드하는 식으로 구현하려 했다. 스크립터블 오브젝트는 다음과 같이 구현했다. public class Ball : ScriptableObject{} //Soccer와 Golf의 공통정보를 보관 public class Soccer : Ball {} //메쉬렌더러가 추가됨 public class Golf : Ball{}//메쉬가 추가됨 이런 구조를 외부에서 보관하고 불러오기 위해 관리하는 스크립트에선 다음과 같이 보관했었다. //.... 중략 .... public List Balls; //.... 중략 .... public voi..
Unity - Destory in List<Component>. Desotry()에 대한 짧은 글 Destory()를 이용해 컴포넌트를 갖고있는 리스트의 인덱스를 파괴해야할 때 이런 생각이 든다. 1. 파괴 후 해당 인덱스는 그대로인가? 2. for문을 통해 특정 인덱스를 파괴 할 때 어찌해야하나? 이 글에선 정확한 매커니즘 까진 파악하지 않았지만 맥락적인 부분을 살펴보았다. 첫 번째, Destory는 하이어라키에 있는 오브젝트를 지우는 행위다. 무슨 의미냐면 하이어라키에서의 삭제가 메모리에서의 삭제의 의미가 되진 않는다는 것이다. 물론 렌더링이나 스크립트 등에 의한 동작은 중단되지만, 기존의 정보는 유지되고 있음을 의미한다. GameObject go = Instantiate(rect.gameObject); Destroy(go); Debug.Log(go); 간단히 생성후 지우고 로그를 찍는 것이다. ..
Run Python on Unity, .Net - IronPython 유니티에서 파이썬을 쓸일이 생겼었다. 그래서 찾아보니 IronPython이란 것이 있더라,https://ironpython.net/ 간략히 말해 .Net FrameWork상에서 구동이 가능한 파이썬엔진 정도로 생각하시면되겠다. 당연히 exe 파일도 제공해주어 명령프롬프트로도 돌릴 수 있다. 이대로 써도 좋지만 몇가지 더 도움될만한 것이 있다. https://github.com/exodrifter/unity-python 누군가 간단히 유니티에 맞춰서 스크립트를 짜둔것이다. 이 사람이 짜둔 스크립트로 엔진을 생성하면 알아서 콜백에 로그를 심어줘서 편하다. 아래는 간단한 예제다 #### private List Libs; //라이브러리의 경로를 보관한다.private string _code; //실행할 파이썬의..
Navmesh Bake 시 주의사항 (Mulit Scene) NavMesh를 Bake할 시 저장 경로는Active Scene의 이름으로된 디렉토리의 하위에 저장됩니다. 따라서 다중 씬 혼합 베이킹이나 NavMesh의 이름을 바꿔가며 여러 Scene을 베이킹해도 Active Scene이 변경되지 않으면 한 경로에만 저장되므로 Scene별로 다른 NavMesh를 적용할 수 없습니다. 해결 방법은 간단합니다. 1. 적용해야할 Scene들만 로드 하고 나머지는 리무브 한다.2. 주체가 될 Scene하나를 Active 상태로 만든다.3. 이대로 굽느다. 이렇게 되면 Active Scene이었던 Scene이 로드 되면 자동으로 구웠던 NavMesh를 불러옵니다.

반응형