Unity 폴더 구조 디자인

Assets 폴더

Assets 폴더는 시스템 폴더로 간주한다. 마치 nodejs의 node_modules 폴더처럼 하위의 바로 유니티 에셋들이 바로 설치되기 때문에 이곳을 내 프로젝트의 루트폴더로 사용하면 모듈별로 폴더 관리가 되지 않는다. 유니티도 Package manager로 모듈화가 이제 가능하지만 모든 에셋들이 이런 방식으로 패키징이 되는 것은 아니다.

Naming

유니티는 기본적으로 카멜케이스 방식의 자유롭게 에셋 이름을 짖는 문화이다. 하지만 내가 만드는 프로젝트의 최상의 모듈 폴더는 git 리포지터의 프로젝트명과 동일한 하이픈과 소문자 기반으로 이름을 만들도록 한다. 단 하부 폴더의 경우에는 유니티 문화를 따라서 만들어도 된다.

  • libunity-unittest

그외 스크립트는 클래스는 카멜케이스 함수는 소문자 언더스코어로 파이 이름을 네이밍 한다. 리소스는 소문자와 언더스코어를 사용한다.

Git repo folder tree

Project

리포지터리 하부의 폴더는 소문자와 언더스코어를 사용한다. 유니티에서 Assets 하위에 바로만든 Resources는 전제 공용으로 사용하는 것이고 1minrpg-cak같은 모듈폴더 아래에 위치한 Resources는 해당 모듈을 위한 것이다. 다만 Resources, StreammingAssets 폴더는 다른 폴더에 만들더라도 하나로 합쳐져서 빌드가 되므로 하위에 모듈명을 만들어서 관리한다.

  • conf
  • doc
  • examples
    • simulator-test : 예제 유니티 프로젝트 폴더 시작
      • Assets
  • src
    • 1minrpg-cak : 유니티 프로젝트 폴더 시작
      • Assets
        • 1minrpg-cak-contents : contents 라는 단어가 들어가도록 만든다.
          • Examples
          • Runtime : 콘텐츠 소스 폴더
          • Editor : 에디터 관련 소스 폴더
          • Documentation
          • Resources
        • Mirror
        • Other assets #1
        • Other assets #1
        • specail file #1 : 이런식으로 Assets 폴더 루트에 자동으로 생성되는 파일들도 존재한다.
        • Resources : 모든 모듈 공용 리소스 폴더
          • 1minrpg-cak
            • main_menu_icon1.png
        • Editor : 모든 공용 Editor 모듈 폴더
      • Library
      • Packages
  • extern

Assets 폴더 하위에 들어가는 각 모듈의 폴더 구조는 다음과 같다.

  • 1minrpg-cak-contents : contents 라는 단어가 들어가도록 만든다.
    • Examples
      • 1minRPG.Examples
    • Runtime
      • 1minRPG.CAK : 루트네임스페이스를 폴더명으로 하고 네임스페이스가 달라지면 하위에 폴더를 만들어서 관리.
        • Scripts
          • Core.cs : 1minRPG.CAK.XXXX class
            • UI : 1minRPG.CAK.UI.XXXX class
        • Scenes
        • Presets
        • AnimationControllers
        • Materials
    • Tests
      • 1minRPG.CAKTest
    • Documentation
    • Resources
      • 1minrpg-cak
        • ui
          • main_menu_bg.png

Unity Package

유니티 패키지 가이드라인을 따른다. conf, doc, src 등의 폴더까지 하나의 유니티 패키지로 포함되는 구조이다.

https://docs.unity3d.com/kr/current/Manual/cus-layout.html

  • libunity-unittest: <Root>
    • pacakge.json
    • README.md
    • Runtime
      • Unity.[YourPackageName].asmdef : Unity.libunity-unittest.asmdef
      • LibUnity.UnitTest
        • Scripts
        • Scenes
    • Editor
      • Runtime
        • Unity.[YourPackageName].Editor.asmdef : Unity.libunity-unittest.Editor.asmdef
        • LibUnity.UnitTestEditor
          • Scripts
          • Scenes
    • Tests
      • Runtime
        • Unity.[YourPackageName].Tests.asmdef : Unity.libunity-unittest.Tests.asmdef
        • LibUnity.UnitTestTest
          • Scripts
          • Scenes
      • Editor
    • Documentation
      • [YourPackageName].md : libunity-unittest.md
0 0 vote
Article Rating
Subscribe
Notify of
guest

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x