From c6b9519f113fbbbc4db700a3c6ab7f0285600cba Mon Sep 17 00:00:00 2001 From: NTG Date: Mon, 18 Aug 2025 14:21:53 +0900 Subject: [PATCH] merge --- .cursorrules | 81 ++++++++++++++++++ .../Content/Demo/Terrain/New Terrain 2.asset | Bin 7776822 -> 7776813 bytes 2 files changed, 81 insertions(+) create mode 100644 .cursorrules diff --git a/.cursorrules b/.cursorrules new file mode 100644 index 000000000..f794c55ad --- /dev/null +++ b/.cursorrules @@ -0,0 +1,81 @@ +@@ -0,0 +1,80 @@ +# Unity 6000.1.0f1 + URP 프로젝트 규칙 + +## 기술 스택 +- Unity 버전: 6000.1.0f1 +- 렌더링 파이프라인: Universal Render Pipeline (URP) + +## 코딩 원칙 +### 1. 아키텍처 설계 +- 모듈화된 컴포넌트 기반 아키텍처 적용 +- MVVM 패턴 적극 활용 +- GameState, GameEvent, GameFlow, GameFramework 구조 활용 +- Restaurant 관련 시스템 모듈화 (RestaurantState, RestaurantEvent, RestaurantCharacter 등) +- 레이어 간 의존성 최소화 + +### 2. 종속성 관리 +- 인터페이스 기반 설계 우선 +- 구체 클래스보다 추상화 선호 +- Dependency Injection 패턴 활용 +- 강한 결합도 지양, 느슨한 결합도 지향 + +### 3. 유지보수성 +- SOLID 원칙 준수 +- 단일 책임 원칙 (SRP) 엄격 적용 +- 개방-폐쇄 원칙 (OCP) 준수 +- 코드 재사용성 극대화 + +### 4. 확장성 +- 플러그인 아키텍처 패턴 적용 +- 이벤트 기반 시스템 활용 +- 모듈화된 컴포넌트 설계 +- 새로운 기능 추가 시 기존 코드 수정 최소화 + +### 5. 명명 규칙 (Naming Conventions) +- **변수명**: 의미있는 단어 사용, 줄임말 지양 + - ❌ `btn`, `txt`, `obj`, `go`, `ui`, `mg`, `ctrl`, 'kvp' (kvp같은 경우 key 또는 value가 무엇인지 알 수 있는 변수명 사용) + - ✅ `button`, `text`, `object`, `gameObject`, `userInterface`, `manager`, `controller` + - ✅ `keyValuePair`, `tabValueButton`, `enumValueTabButton` (구체적인 의미 표현) +- **함수명**: 동사로 시작하는 명확한 의미 표현 + - ❌ `Init()`, `Setup()`, `Get()`, `Set()` + - ✅ `Initialize()`, `SetupComponents()`, `GetPlayerData()`, `SetPlayerHealth()` + +### 6. 코드 스타일 +- **논리 연산자**: `!` 키워드 대신 `== false` 사용 + - ❌ `if (!isActive)`, `if (!hasComponent)` + - ✅ `if (isActive == false)`, `if (hasComponent == false)` +- **문자열**: 리터럴보다 상수 사용 권장 +- **컬렉션 타입**: 성능상 우월한 경우가 아닌 이상 `List<>` 사용 권장 + - ❌ `int[]`, `string[]`, `GameObject[]` (일반적인 경우) + - ✅ `List`, `List`, `List` (일반적인 경우) + - ⚠️ `int[]` (고정 크기, 성능이 중요한 경우만) + +## Unity 특화 규칙 +### URP 최적화 +- URP 렌더링 파이프라인 최적화 우선 +- Shader Graph 활용 권장 +- Volume 시스템 적극 활용 +- 렌더링 성능 모니터링 + +### 성능 고려사항 +- Object Pooling 패턴 적용 +- 메모리 할당 최소화 +- 적절한 Update/LateUpdate 사용 +- Addressables 시스템 활용 + +## 프로젝트 구조 +- Assets/_DDD: 프로젝트 핵심 시스템 (프로젝트명) +- Assets/_ScriptAssets: 스크립트 에셋 및 ScriptableObject +- Assets/_Scripts: 모듈화된 스크립트 시스템들 + - GameFramework: 게임 프레임워크 핵심 + - GameState: 게임 상태 관리 + - GameEvent: 게임 이벤트 시스템 + - GameFlow: 게임 플로우 제어 + - Restaurant*: 레스토랑 시뮬레이션 관련 시스템 + - InputSystem: 입력 시스템 + - Audio: 오디오 시스템 +- 각 폴더별 명확한 책임 분리 + +## 프레임워크 활용 +- 기존 프레임워크와의 통합 방법 +- 커스텀 프레임워크 확장 방법 diff --git a/Packages/com.distantlands.cozy.core/Content/Demo/Terrain/New Terrain 2.asset b/Packages/com.distantlands.cozy.core/Content/Demo/Terrain/New Terrain 2.asset index 605b9ea26e1580b72316bbeaf8478cbdf3807e2e..14b82427360232ca3f9c807b22c575e99c7a793d 100644 GIT binary patch delta 497 zcmWN@$1+1<7=Ym+B2f}2=cv&;Q4*aHiRd*%kKQ?Y-Lm**tlWW>y%po1iCf6h$|bl8 z@8X$xzJ7i!?|70VNfwKwh*eU>CU!}abjgrRafnm0L=)GiuEmurt_OT7@~3-!>d|dD zH1*;!oSJ&|8&rg5 zHK;`$>fu2H8qtJic;Q0}TG57fbf6Pm=td9x=tUm_=tmGC3?Pg_3}F}}7{wUIF@Z@; zVHz`tU>0+TVjc@v#1fXVf>p$@hIMRU6Ixg_Oq}8j=eWQnu5gVT N+~N-RDq%jD!GGS0=z9PF delta 497 zcmWN@$1+1<7=Ym+#L;q2a@6RZXh$bVh)%TV(L0IWHZ~UD3|C;|5{!*8{+TRu4OT9} zRd^TA%=7W{Yx~BNBuJvzBuSFRE-9i(s-#J}WJsnsL>EJxUoIo2^q9+Msovecv7 zbQtQzW9o)_^_q4~y#-9Cq25ELrm4>`e~w2?WFZ?l$VDFV;YI-pQG{ZYpcG{&M+GWT zg=*BG7IpBT9t~(j6PjV61+8d9J37#bE_9;@Ui6|5{qVt$0SqF5Aq-;#qZq?DCNPO9 z1Tl>n%wi7n2w?$>Si&+^u!=Q=v5pOFVhh{Y!7lc&j{_Xy2*)_VDI$pC4ClDOC9ZId P8{Fa!_bMKFi2DBliTC7i