Skip to content

Commit f7c91c9

Browse files
committed
feat: 모델 기준에 맞게 스크린 해상도 조정
1 parent dda40f7 commit f7c91c9

18 files changed

+1564
-38
lines changed
Lines changed: 225 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,225 @@
1+
# Live2D 모델 해상도별 크기 조정 시스템 가이드
2+
3+
## 개요
4+
5+
이 시스템은 다양한 해상도와 디바이스에서 Live2D 모델의 크기를 자동으로 조정하여 일관된 사용자 경험을 제공합니다.
6+
7+
## 주요 구성 요소
8+
9+
### 1. ResolutionModelScaleConfig
10+
- 해상도별 스케일 규칙을 정의하는 ScriptableObject
11+
- 자동 스케일 계산 로직 포함
12+
- PC/모바일 구분 지원
13+
14+
### 2. Live2DModelScaler
15+
- 개별 Live2D 모델에 스케일을 적용하는 컴포넌트
16+
- 해상도 변경 시 자동 스케일 조정
17+
- 원본 크기 보존 및 복원 기능
18+
19+
### 3. ResolutionManager
20+
- 전체 시스템을 관리하는 싱글톤 매니저
21+
- 모든 모델 스케일러를 중앙에서 관리
22+
- 해상도 변경 감지 및 자동 적용
23+
24+
## 사용 방법
25+
26+
### 1. 기본 설정
27+
28+
1. **ResolutionModelScaleConfig 생성**
29+
```
30+
Assets > Create > ProjectVG > Character > Resolution Model Scale Config
31+
```
32+
33+
2. **기본 설정 구성**
34+
- Reference Resolution: 기준 해상도 (예: 1920x1080)
35+
- Reference Scale: 기준 스케일 (예: 1.0)
36+
- Scale Mode: 스케일 계산 방식 선택
37+
38+
### 2. 해상도별 규칙 설정
39+
40+
```csharp
41+
// 기본 규칙들 (모바일 기준 최적화)
42+
- 모바일 기본: 0.85x 스케일
43+
- 모바일 세로 (작은 화면): 0.7x 스케일
44+
- 모바일 가로/태블릿 세로: 0.8x 스케일
45+
- 태블릿 가로: 0.9x 스케일
46+
- PC FHD (1920x1080): 1.1x 스케일
47+
- PC QHD 이상: 1.3x 스케일
48+
```
49+
50+
### 3. 자동 적용
51+
52+
1. **CharacterFacade 사용 시**
53+
- 모델 스케일러가 자동으로 추가됨
54+
- 별도 설정 불필요
55+
56+
2. **수동 적용**
57+
```csharp
58+
// Live2DModelScaler 컴포넌트 추가
59+
var scaler = modelObject.AddComponent<Live2DModelScaler>();
60+
scaler.ApplyScale();
61+
```
62+
63+
## 해상도별 상세 설정
64+
65+
### 모바일 환경
66+
- **기준 해상도**: 1080x1920 (세로 모드)
67+
- **모바일 기본**: 0.85x 스케일 (대부분의 모바일 기기)
68+
- **작은 화면**: 0.7x 스케일 (480px 이하 너비)
69+
- **가로 모드**: 0.8x 스케일 (481-768px 너비)
70+
- **고해상도**: 0.9x 스케일 (1440px 이상 너비, 2960px 이상 높이)
71+
72+
### 태블릿 환경
73+
- **태블릿 세로**: 0.8x 스케일 (481-768px 너비)
74+
- **태블릿 가로**: 0.9x 스케일 (769-1024px 너비)
75+
76+
### PC 환경
77+
- **PC FHD**: 1.1x 스케일 (1025-1920px 너비, 1080px 이하 높이)
78+
- **PC QHD+**: 1.3x 스케일 (1921px 이상 너비, 1081px 이상 높이)
79+
80+
## 스케일 계산 방식
81+
82+
### 1. HeightBased
83+
- 화면 높이를 기준으로 스케일 계산
84+
- 세로 모드에 적합
85+
86+
### 2. WidthBased
87+
- 화면 너비를 기준으로 스케일 계산
88+
- 가로 모드에 적합
89+
90+
### 3. AspectRatioBased (권장)
91+
- 종횡비를 고려한 스케일 계산
92+
- 다양한 화면 비율에 대응
93+
- 모바일과 PC 환경 모두에 최적화
94+
95+
## 설정 예시
96+
97+
### 모바일 환경 (기준)
98+
```yaml
99+
Reference Resolution: 1080x1920
100+
Reference Scale: 1.0
101+
Scale Mode: AspectRatioBased
102+
Min Scale: 0.6
103+
Max Scale: 1.5
104+
```
105+
106+
### PC 환경
107+
```yaml
108+
Reference Resolution: 1920x1080
109+
Reference Scale: 1.1
110+
Scale Mode: AspectRatioBased
111+
Min Scale: 0.6
112+
Max Scale: 1.5
113+
```
114+
115+
## 디버깅
116+
117+
### 1. 디버그 정보 활성화
118+
```csharp
119+
// ResolutionManager에서
120+
showDebugInfo = true;
121+
122+
// Live2DModelScaler에서
123+
showDebugInfo = true;
124+
```
125+
126+
### 2. 현재 상태 확인
127+
```csharp
128+
var info = ResolutionManager.Instance.GetCurrentResolutionInfo();
129+
Debug.Log($"해상도: {info.Resolution}, 스케일: {info.Scale}");
130+
```
131+
132+
## 고급 기능
133+
134+
### 1. 수동 스케일 설정
135+
```csharp
136+
var scaler = GetComponent<Live2DModelScaler>();
137+
scaler.SetManualScale(1.5f);
138+
```
139+
140+
### 2. 원본 크기 복원
141+
```csharp
142+
scaler.ResetToOriginalScale();
143+
```
144+
145+
### 3. 동적 규칙 추가
146+
```csharp
147+
// 런타임에 규칙 추가 가능
148+
var config = Resources.Load<ResolutionModelScaleConfig>("ResolutionModelScaleConfig");
149+
// 규칙 수정 후 적용
150+
```
151+
152+
## 주의사항
153+
154+
1. **Resources 폴더**
155+
- ResolutionModelScaleConfig는 반드시 Resources 폴더에 위치해야 함
156+
- 기본 경로: `Assets/Resources/ResolutionModelScaleConfig.asset`
157+
158+
2. **성능 고려**
159+
- 해상도 변경 감지는 Update에서 수행
160+
- 불필요한 경우 `applyOnResolutionChange = false` 설정
161+
162+
3. **스케일 범위**
163+
- Min/Max Scale 범위를 적절히 설정
164+
- 너무 극단적인 값은 피하기
165+
166+
## 실제 사용 예시
167+
168+
### 일반적인 해상도별 결과
169+
```csharp
170+
// iPhone SE (375x667) - 모바일 세로 (작은 화면)
171+
// 스케일: 0.7x
172+
173+
// iPhone 12 (390x844) - 모바일 기본
174+
// 스케일: 0.85x
175+
176+
// 모바일 고해상도 (1440x2960) - 모바일 고해상도
177+
// 스케일: 0.9x
178+
179+
// iPad (768x1024) - 태블릿 세로
180+
// 스케일: 0.8x
181+
182+
// iPad 가로 (1024x768) - 태블릿 가로
183+
// 스케일: 0.9x
184+
185+
// PC FHD (1920x1080) - PC FHD
186+
// 스케일: 1.1x
187+
188+
// PC QHD (2560x1440) - PC QHD+
189+
// 스케일: 1.3x
190+
```
191+
192+
### 디버그 정보 확인
193+
```csharp
194+
// 현재 해상도 정보 출력
195+
var info = ResolutionManager.Instance.GetCurrentResolutionInfo();
196+
Debug.Log($"현재 해상도: {info.Resolution}");
197+
Debug.Log($"적용된 스케일: {info.Scale:F2}");
198+
Debug.Log($"종횡비: {info.AspectRatio:F2}");
199+
Debug.Log($"모바일 여부: {info.IsMobile}");
200+
```
201+
202+
## 문제 해결
203+
204+
### 1. 스케일이 적용되지 않는 경우
205+
- ResolutionModelScaleConfig가 Resources 폴더에 있는지 확인
206+
- Live2DModelScaler 컴포넌트가 추가되었는지 확인
207+
- 디버그 정보를 활성화하여 로그 확인
208+
209+
### 2. 스케일이 예상과 다른 경우
210+
- Reference Resolution과 Reference Scale 설정 확인
211+
- Scale Mode 설정 확인
212+
- 해상도별 규칙 우선순위 확인
213+
214+
### 3. 성능 문제
215+
- `autoDetectScalers = false` 설정
216+
- 필요한 경우에만 수동으로 스케일러 등록
217+
218+
### 4. 특정 해상도에서 문제가 있는 경우
219+
```csharp
220+
// 특정 해상도에 대한 스케일 확인
221+
var config = Resources.Load<ResolutionModelScaleConfig>("ResolutionModelScaleConfig");
222+
var testResolution = new Vector2(1920, 1080);
223+
var scale = config.CalculateScaleForResolution(testResolution);
224+
Debug.Log($"1920x1080에서의 스케일: {scale:F2}");
225+
```

Assets/Resources/Character/Model.meta renamed to Assets/Docs/Guides/Live2D_Resolution_Scaling_Guide.md.meta

Lines changed: 2 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)