1. 게임 오브젝트, 액터 같은 객체들은 엔진의 어디서 관리되고 있나요?
관리 방법도 궁금한데, 폴링으로 순회하며 함수를 실행하나요?
2. 게임 구조 설계방법에 대해 질문드립니다. 예제를 살펴보니 정적 데이터, 애니메이션이나 메쉬 등의 에셋, 게임 로직을 분리하여 스크립트용 코드와 에디터 사용을 섞어 구현하고 있는 것 같습니다만, 협업이 어려운 환경에서도 명확히 구분하여 개발이 진행되는지 알고싶습니다.
3. 게임로직이나 연산의 경우에는 코어 헤더파일 임포트나 mononehavior 상속을 최소한으로 사용하여 진행하고 싶은데, 권장되는 방법인지요?
1. 유니티는 기존 싱글쓰레드로써 모든오브젝트가 폴링됩니다. 2. 다른건 몰라도 게임 콘텐츠 데이터는 파일로 빼냅니다. 스크립터블이고 나발이고 그냥 파일로 빼세요.. 나머지는 나중에 리팩터링 하면서 반성하게되면 설계 실력이 늘어요. 이 과정을 안거치면 아마 못배웁니다. 저는 그랬습니다. 난 왜 이따구로 짰었지... 하면서 반성했어요.
답변 감사드립니다. 혹시 오브젝트가 많을 경우 폴링을 병렬처리로 관리하는 방법도 있을까요?
3번은 무슨말인지 잘 모르겠으나, c#은 c++과 다르게 임포트 걱정 별로 없습니다. 맘대로 하세요. 유니티는 메인쓰레드 외에 모노를 못건듭니다. 모노 가능하면 상속해서 잘 만드는게 차라리 좋습니다. 일반클래스랑 모노클래스랑 해서 엉키면 골아픕니다.
예를들어, 캐릭터의 스탯과 같은 프로퍼티를 별도의 구조체로 만들어 관리하고 싶은데, 반드시 Monobehavior 상속 혹은 코어 헤더를 임포트 해야하는지 궁금하더라구요. 당장 개발된다고 해도 문제가 생길지 안생길지 판단이 안되어서요.
유니티 main()을 커스텀 관리하는 방법은 아마도 없을겁니다. 유니티는 코드도 봉해져있고,, 못건드릴거에요. 다만 3ghz급 단일쓰레드는 연산량이 생각보다 어마무시합니다. 코루틴 등을 잘 이용하고, pool처리만 잘해줘도 성능은 매우 충분하다고 생각합니다.
답변 감사드립니다! 큰 도움이 되었습니다.
모든 데이터들은 모노 상속 전혀 필요없어요. 직접 해보시면 될것 같고, 보통 스탯은 모노에다가 부착 방식 씁니다. 그냥 멤버 필드변수로 때려박든 구조체넣든, 몬스터(모노)+스탯스트럭쳐