273 lines
7.0 KiB
Markdown
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
|