ZH Basic - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
Basic Runtime 與 IDE
Home · BASIC · UO API · A–Z · Examples · Languages
Basic Runtime 執行 Basic 腳本,並把 UO.* 呼叫連接到 ClassicUO 的實際功能。內建 IDE 使用 Eclipse Theia 與 Monaco 編輯器。
腳本進入點
一般可執行腳本必須包含:
SUB Main()
UO.Print('Hello from Basic')
END SUB
開啟或修改檔案時,Runtime/語言服務會索引整份文件,包括 procedures、functions、parameters、local/global declarations、API calls 與 diagnostics。SUB Main() 位於檔案開頭或末尾都可以,執行不依賴編輯器捲動位置。
IDE 面板
- Explorer:檔案與目前腳本;
- Editor:Basic 編輯器;
- Outline:目前檔案的
SUB與FUNCTION; - Problems:語法與驗證問題,可跳至來源行;
- Output / Debug Console:按時間排序的輸出;
- API Inspector:目前 API 元素的簽章與說明;
- Variables / Watch / Call Stack:除錯停止時的實際值與 frame;
- API Manual:由 Runtime 註冊內容形成的完整目錄。
面板可調整大小。選取不同面板不應使其他面板變成空白;多腳本狀態由同一 Runtime 同步。
腳本狀態
| 狀態 | 指示色 |
|---|---|
| running | 綠色 |
| paused | 黃色 |
| stopped 且被選取 | 黑色/目前主題的一般顏色 |
| debugging | 由除錯狀態與目前停止行共同顯示 |
可同時執行多個腳本。Explorer 中選取哪一個腳本,Run、Pause、Stop 與逐步命令就作用於該實例,不應改變其他腳本的狀態。
Run 與除錯快捷鍵
| 動作 | 按鍵 | 行為 |
|---|---|---|
| Run Current Script | F5 |
驗證並執行目前腳本 |
Start Script (SUB Main) / Run Without Debugging |
Ctrl+F5 |
不使用 breakpoint 啟動 SUB Main() |
| Start Debugging | F4 |
在除錯器下啟動 SUB Main() |
| Validate | F6 |
只驗證語法,不執行 |
| Pause/Resume Current Script | F7 |
暫停或繼續目前實例 |
| Continue | F8 |
從 pause 或 breakpoint 繼續 |
| Toggle Breakpoint | F9 |
新增或移除目前行 breakpoint |
| Step Over | F10 |
執行目前語句並到下一個實際語句 |
| Step Into | F11 |
進入被呼叫的 SUB/FUNCTION |
| Step Out | Shift+F11 |
完成目前 procedure 並回到呼叫端 |
| Stop | Shift+F5 |
停止選取的腳本 |
| Restart Debugging | Ctrl+Shift+F5 |
重新以除錯模式啟動選取腳本 |
| API Documentation for Symbol | Ctrl+F1 |
開啟游標符號的 Manual 項目 |
Stop All Scripts 與 Pause All Scripts 位於 Run 選單,只有存在適用的 running/paused 實例時才可用。灰色表示目前狀態不允許該操作,不代表按鈕損壞。
逐步執行與值
F10、F11、Shift+F11 只在除錯器停在可執行語句時有效。目前執行行會在 Editor 中醒目顯示。除錯停止時,Variables、Watch 與 Call Stack 顯示該 frame 的精確快照;連續執行時只能安全顯示最近一次捕捉的快照。
若要查看某個 API 呼叫的實際回傳值,請把結果存入變數,在下一行設 breakpoint,然後在 Variables/Watch 查看,或使用 UO.Print(...) 輸出。
編輯輔助與保存
- 自動完成顯示完整
UO.*語法; - API 項目單擊顯示說明,雙擊插入完整形式;
- 只有按住
Ctrl時,Ctrl-hover 才顯示緊湊說明; - tooltip 會換行並限制在螢幕範圍內;
- 新的未命名檔案 Save 到
Autoload\Scripts; - 已從磁碟開啟的檔案 Save 回原路徑;
- 關閉 IDE 視窗不會停止腳本,只要 ClassicUO Runtime 仍在執行;重新開啟 IDE 後會重新讀取狀態。
避免介面停頓
Runtime 使用隔離工作內容、準備好的來源快取、協作式 yielding 與受限制的遊戲執行緒工作量。腳本仍必須在重複迴圈中使用 UO.Wait(...),不可用無等待的 active loop 長時間佔用執行緒。