Files
2025-11-29 18:19:28 +08:00

273 lines
7.0 KiB
Markdown

# Unity Editor Toolkit - Unity 패키지
Claude Code 통합을 위한 WebSocket 기반 Unity Editor 실시간 제어.
## 설치
### 권장: Unity Package Manager
1. Unity Editor 열기
2. Window → Package Manager
3. `+` 클릭 → Add package from git URL
4. 입력: `https://github.com/Dev-GOM/claude-code-marketplace.git?path=/plugins/unity-editor-toolkit/skills/assets/unity-package`
5. Add 클릭
### 대안: Assets 폴더
커스터마이징이 필요한 경우, 이 폴더를 `Assets/UnityEditorToolkit/`에 복사하세요.
> **참고**: UPM은 `Packages/` 폴더에 설치되며(읽기 전용), Assets는 직접 수정이 가능합니다.
## 빠른 시작
### 1. Server Window 열기
1. Unity 메뉴: `Tools > Unity Editor Toolkit > Server Window`
2. Editor에 새 창이 나타납니다
### 2. 플러그인 스크립트 경로 설정
1. **Plugin Scripts Path**: 사용자 홈 폴더에서 자동 감지 (`~/.claude/plugins/...`)
2. 감지되지 않으면 "Browse"를 클릭하여 수동 선택
3. 경로는 다음을 가리켜야 함: `unity-editor-toolkit/skills/scripts`
### 3. CLI 설치 (일회성 설정)
1. "Install CLI" 버튼 클릭
2. WebSocket 서버와 TypeScript CLI 빌드
3. 설치 완료 대기 (1-2분 소요 가능)
4. Console에 표시: "✓ CLI installation completed"
### 4. 서버 자동 시작
1. Unity Editor가 열리면 서버가 자동으로 시작됩니다
2. **포트**: 9500-9600 범위에서 자동 할당 (수동 설정 불필요)
3. **상태 파일**: `{ProjectRoot}/.unity-websocket/server-status.json`
4. CLI가 이 파일에서 올바른 포트를 자동으로 감지
### 5. Claude Code에서 연결
Claude Code에 Unity Editor Toolkit 플러그인 설치:
```bash
# 마켓플레이스 추가
/plugin marketplace add https://github.com/Dev-GOM/claude-code-marketplace.git
# 플러그인 설치
/plugin install unity-editor-toolkit@dev-gom-plugins
```
CLI 명령어 사용:
```bash
# GameObject 찾기
cd <unity-project-root> node .unity-websocket/uw go find "Player"
# 위치 설정
cd <unity-project-root> node .unity-websocket/uw tf set-position "Player" "0,5,10"
# 씬 로드
cd <unity-project-root> node .unity-websocket/uw scene load "GameScene"
# 콘솔 로그 가져오기
cd <unity-project-root> node .unity-websocket/uw console logs
```
## 요구사항
### Unity 버전
- **Unity 2020.3 이상**
- **Unity 6+ (2023.x+)** 완전 호환
### 의존성
- websocket-sharp 라이브러리 (아래 의존성 섹션 참조)
### Test Framework (테스트 실행용)
- **Unity 2019.2+**: 모든 프로젝트에 자동 포함
- **Unity 6+ (2023.x+)**: Core Package (Editor 버전 고정) + 새 기능
## 의존성
### websocket-sharp
이 패키지는 WebSocket 통신을 위해 websocket-sharp가 필요합니다.
**설치:**
1. websocket-sharp 다운로드: https://github.com/sta/websocket-sharp/releases
2. `websocket-sharp.dll` 압축 해제
3. `Packages/com.devgom.unity-editor-toolkit/ThirdParty/websocket-sharp/`에 복사
4. Unity가 자동으로 DLL을 임포트
**대안:**
NuGet for Unity를 통해 추가:
1. NuGet for Unity 설치: https://github.com/GlitchEnzo/NuGetForUnity
2. NuGet 창 열기
3. "websocket-sharp" 검색
4. 설치
## 지원 명령어
### GameObject (5개 명령어)
- `GameObject.Find` - 이름으로 GameObject 찾기
- `GameObject.Create` - 새 GameObject 생성
- `GameObject.Destroy` - GameObject 파괴
- `GameObject.SetActive` - 활성 상태 설정
### Transform (6개 명령어)
- `Transform.GetPosition` - 월드 위치 가져오기
- `Transform.SetPosition` - 월드 위치 설정
- `Transform.GetRotation` - 회전 가져오기 (오일러 각도)
- `Transform.SetRotation` - 회전 설정
- `Transform.GetScale` - 로컬 스케일 가져오기
- `Transform.SetScale` - 로컬 스케일 설정
### Scene (3개 명령어)
- `Scene.GetCurrent` - 활성 씬 정보 가져오기
- `Scene.GetAll` - 로드된 모든 씬 가져오기
- `Scene.Load` - 씬 로드 (단일 또는 추가)
### Console (2개 명령어)
- `Console.GetLogs` - 필터링된 콘솔 로그 가져오기
- `Console.Clear` - 콘솔 지우기
### Hierarchy (1개 명령어)
- `Hierarchy.Get` - GameObject 계층 구조 트리 가져오기
## API 예제
### GameObject 찾기
**요청:**
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "GameObject.Find",
"params": { "name": "Player" }
}
```
**응답:**
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"name": "Player",
"instanceId": 12345,
"path": "/Player",
"active": true,
"tag": "Player",
"layer": 0
}
}
```
### 위치 설정
**요청:**
```json
{
"jsonrpc": "2.0",
"id": 2,
"method": "Transform.SetPosition",
"params": {
"name": "Player",
"position": { "x": 0, "y": 5, "z": 10 }
}
}
```
**응답:**
```json
{
"jsonrpc": "2.0",
"id": 2,
"result": { "success": true }
}
```
## 보안
- **로컬호스트 전용**: 서버는 127.0.0.1에서의 연결만 허용
- **에디터 모드 전용**: 서버는 Editor에서만 실행되며, 빌드에서는 실행되지 않음
- **Undo 지원**: 모든 작업은 Unity의 Undo 시스템을 지원
## 문제 해결
### 서버가 시작되지 않음
1. Console에서 오류 메시지 확인
2. 포트가 사용 중인지 확인 (9500-9600)
3. websocket-sharp.dll이 설치되었는지 확인
4. 다른 포트 번호 시도
### 연결할 수 없음
1. 서버가 실행 중인지 확인 (Console 확인)
2. WebSocket URL 확인: 상태 파일에서 포트 확인
3. 방화벽 설정 확인
4. Unity Editor가 열려 있는지 확인 (Edit Mode 또는 Play Mode)
### 명령어 실패
1. Console에서 오류 세부정보 확인
2. GameObject 이름이 올바른지 확인
3. 씬이 로드되었는지 확인
4. 매개변수 형식이 API와 일치하는지 확인
## Editor Window
Unity 메뉴를 통해 서버 제어에 액세스:
**Tools → Unity Editor Toolkit → Server Window**
기능:
- 서버 상태 모니터링
- 플러그인 스크립트 경로 설정
- CLI 설치 및 빌드
- 문서 빠른 액세스
## 성능
- 최소 오버헤드: 명령당 ~1-2ms
- 다중 클라이언트 동시 지원
- 로그는 1000개 항목으로 제한
- 스레드 안전 작업
## 알려진 제한사항
- Editor 모드 전용 (빌드에서 사용 불가)
- 단일 씬 활성 명령 실행
- GameObject 찾기는 활성 씬으로 제한
- 콘솔 로그는 최근 1000개 항목으로 제한
## 향후 기능
계획된 500개 이상의 명령어는 [COMMANDS.md](../COMMANDS.md)를 참조하세요:
- Component 조작
- Material 편집
- Prefab 인스턴스화
- Asset Database 쿼리
- Animation 제어
- Physics 시뮬레이션
- 그리고 훨씬 더 많은 기능...
## 라이선스
Apache License 2.0
## 링크
- [GitHub 저장소](https://github.com/Dev-GOM/claude-code-marketplace)
- [플러그인 문서](../README.ko.md)
- [명령어 레퍼런스](../COMMANDS.ko.md)
- [이슈 트래커](https://github.com/Dev-GOM/claude-code-marketplace/issues)
## 지원
문제, 질문 또는 기능 요청은 다음을 방문하세요:
https://github.com/Dev-GOM/claude-code-marketplace/issues