개요
플러그인 개발(SDK) 개요
섹션 제목: “플러그인 개발(SDK) 개요”NP Editor 는 C# 플러그인으로 기능을 더할 수 있습니다. 플러그인은 dll 하나와 plugin.json 하나로 된 폴더입니다. 플러그인은 SDK(NP.Editor.Sdk.dll) 하나만 참조합니다. Godot 이나 에디터 내부 코드는 몰라도 됩니다.
이 문서는 SDK 1.3.0 기준입니다. 지금 에디터의 SDK 판은 도구 › 플러그인 관리자… 창 머리에 SDK 1.3.0 처럼 나옵니다.
플러그인이 더할 수 있는 것
섹션 제목: “플러그인이 더할 수 있는 것”| 붙이는 곳 | 에디터 화면 | 등록점 | SDK |
|---|---|---|---|
| 메뉴 항목 | 메뉴 막대(파일 · 편집 · 창 · 도구 · 빌드 · 도움말, 새 이름 = 새 메뉴) | AddMenuItem | 1.0 |
| 빠른 추가 | 메인 툴바 「추가」(검색 · 분류 · 아이콘) | AddQuickAddItem | 1.0 |
| 콘솔 명령 | 아래 「콘솔」 패널 | AddCommand | 1.0 |
| 가져오기 · 내보내기 | 파일 › 가져오기: … · 빌드 › 내보내기: … | AddImporter · AddExporter | 1.0 |
| 패널 | 아래 영역의 패널(창 메뉴에서 열기) | AddContentTab + NpUi | 1.0 |
| 모드 | 메인 툴바 모드 줄 + 도구 패널 + 뷰포트 클릭 | AddMode | 1.0 |
| 액터 타입 | 아웃라이너 「타입」 칸의 글자 · 색 | AddActorType | 1.0 |
| 칸 지킴이 · 대칭 | 모든 블록 편집에 끼어듦 | AddCellGuard · AddSymmetry | 1.0 |
| 화면 검증 시나리오 | --np-shot=<id> 자동 스크린샷 · 검사(에디터 개발용 빌드) | AddShotScenario | 1.0 |
| 단축키 | 도구 › 단축키…(사용자가 바꿀 수 있음) | AddShortcut | 1.1 |
| 설정 저장 | 플러그인마다 JSON 파일 하나 | host.Settings | 1.1 |
| 3D 겹쳐 그리기 | 뷰포트 위 선 · 상자 · 글자 | host.Draw | 1.1 |
| 월드 로직 type | 월드 로직 · 로직 그래프 · 검사 · MCP · 플레이 미리보기 | AddSceneEvent | 1.2 |
| 씬 액터 읽기 · 플레이 카메라 | 씬 액터 목록, 플레이 중 카메라 | host.Scene · host.View | 1.3 |
월드도 읽고 씁니다(host.World). 블록 상태 글은 마인크래프트 형식(minecraft:oak_stairs[facing=east])입니다. World.Edit 한 번이 되돌리기 한 단계입니다.
외부 플러그인과 내장 플러그인
섹션 제목: “외부 플러그인과 내장 플러그인”| 외부 플러그인 (이 문서의 대상) | 내장 플러그인 | |
|---|---|---|
| 어디에 | 플러그인 폴더 안의 폴더 하나 | 에디터 안 |
| 참조 | NP.Editor.Sdk.dll 하나 | 에디터 내부 코드 |
| 켜기 · 끄기 | 플러그인 관리자에서, 에디터를 끄지 않고 | 늘 켜짐 |
| 오류 | 그 플러그인만 격리, 에디터는 계속 | 에디터와 함께 고침 |
| 호환 | SDK 판(semver)으로 보장 | 에디터 판과 같음 |
에디터의 기본 기능(블록 브러시 · 랜드스케이프 · 월드 로직 등)도 같은 등록 구조의 내장 플러그인입니다. 내장 플러그인은 외부에 공개하지 않는 등록점(보기 모드 · 뷰포트 끌기 · 패널 영역 고르기 등)도 씁니다. 이 문서는 외부 플러그인만 다룹니다.
내 플러그인.dll ──참조──> NP.Editor.Sdk.dll (인터페이스 · 자료형) │ 플러그인 호스트 (plugin.json 검사 · SDK 판 비교 · 로드 컨텍스트 · 오류 격리) │ NP Editor (메뉴 · 모드 · 패널 · 월드 로직 · 뷰포트)| 층 | 하는 일 |
|---|---|
| 내 플러그인 dll | INpEditorPlugin.Register(host) 에서 등록점을 부릅니다. |
NP.Editor.Sdk.dll | 인터페이스와 자료형만 있습니다. 에디터가 같은 파일을 이미 올려 두고 플러그인과 나눠 씁니다. |
| 플러그인 호스트 | plugin.json 을 검사하고 SDK 판을 비교합니다. 플러그인마다 따로 로드 컨텍스트를 만들고, 플러그인 코드의 예외를 잡아 그 플러그인만 끕니다. |
| 에디터 | 등록된 것을 메뉴 · 툴바 · 패널 · 월드 로직에 붙입니다. 끄면 모두 뗍니다. |
등록한 것에는 에디터 안에서 ext.<플러그인 id>. 접두어가 붙습니다. 그래서 내장 기능이나 다른 플러그인과 이름이 겹치지 않습니다. 콘솔 명령 이름과 월드 로직 type 은 예외입니다. 자세한 내용은 불러오기와 수명에 있습니다.
준비물
섹션 제목: “준비물”| 항목 | 값 |
|---|---|
| 에디터 | NP Editor 0.9.1 이상(SDK 1.3). SDK 1.2 까지만 쓰면 0.9.0 도 됩니다. |
| .NET | .NET 8 SDK (dotnet --version 이 8. 이상) |
| 언어 | C# 12 (net8.0 대상) |
| 편집기 | 아무 C# 편집기(Visual Studio · Rider · VS Code) |
| SDK dll | 에디터 설치 폴더의 data_NPEditor_windows_x86_64\NP.Editor.Sdk.dll |
에디터 기본 설치 폴더는 %LOCALAPPDATA%\Programs\NP Editor 입니다.
보안: 플러그인은 서명 검사 없이 에디터와 같은 권한으로 실행되는 코드입니다. 직접 만들었거나 믿을 수 있는 곳에서 받은 플러그인만 넣습니다. 자세한 내용은 배포와 버전에 있습니다.
다음에 읽을 문서
섹션 제목: “다음에 읽을 문서”| 하고 싶은 것 | 문서 |
|---|---|
| 10분 만에 첫 플러그인 만들기 | 빠른 시작 |
plugin.json 칸 알기 | plugin.json |
| 켜기 · 끄기 · 오류 격리가 도는 방식 | 불러오기와 수명 |
| 월드 읽기 · 쓰기, 이벤트, 설정, 3D 그리기 | 호스트 API |
| 메뉴 · 모드 · 명령 등 등록점 전부 | 등록점 |
| 패널 UI 만들기 | 패널 UI(NpUi) |
| 월드 로직에 트리거 · 조건 · 동작 더하기 | 월드 로직 type 추가 |
| 플레이 중 카메라 연출 | 씬 읽기와 플레이 카메라 |
| 시험 · 디버그 | 테스트와 디버그 |
| 남에게 나눠 주기 | 배포와 버전 |
| 오류가 날 때 | 문제 해결 |
| SDK 판마다 바뀐 것 | SDK 변경 내역 |
| 예제 소스 | 예제: hello_tool · 예제: csv_export · 예제: event_example |