插件系统
Bilup 的插件系统基于 Scratch Addons 浏览器扩展,提供了扩展和自定义 Bilup 编辑器界面和功能的方式。
架构概述
插件系统由几个关键组件组成:
- 插件管理器: 加载和管理插件生命周期
- 设置存储: 插件设置的持久存储
- Redux 集成: 将插件连接到 Bilup 的状态管理
- 事件系统: 允许插件监听和响应编辑器事件
- API 层: 为插件提供与 Bilup 交互的安全接口
插件类型
用户脚本
在 Bilup 编辑器上下文中运行的 JavaScript 代码,用于添加功能:
// 示例 userscript.js
export default async function ({ addon, msg }) {
// 添加自定义菜单项
addon.tab.createBlockContextMenu((items, target) => {
items.push({
enabled: target.isStage === false,
text: msg("rename-sprite"),
callback: () => {
// 自定义功能
}
});
});
}
用户样式
用于自定义 Bilup 界面的 CSS 修改:
/* 示例 userstyle.css */
[class*="stage_stage-wrapper"] {
border: 2px solid var(--ui-primary);
border-radius: 8px;
}
.sa-editor-dark-mode [class*="blocks_blocks"] {
background-color: #1e1e1e !important;
}
清单格式
每个插件需要一个 addon.json 清单文件:
{
"name": "Editor Dark Mode",
"description": "Bilup 编辑器的深 色主题",
"credits": [
{
"name": "Bilup Team"
}
],
"userscripts": [
{
"url": "userscript.js",
"matches": ["https://editor.bilup.org/*"]
}
],
"userstyles": [
{
"url": "userstyle.css",
"matches": ["https://editor.bilup.org/*"],
"if": {
"settings": {
"dark": true
}
}
}
],
"settings": [
{
"name": "Dark mode",
"id": "dark",
"type": "boolean",
"default": true
}
],
"tags": ["theme", "dark", "editor"],
"enabledByDefault": false,
"versionAdded": "1.0.0",
"updateUserstylesOnSettingsChange": true
}