UnityCoder 现在拥有了全新的编辑器变体注册系统,让添加新的 VSCode 变体变得极其简单!
VSCodeVariantRegistry.RegisterVariant(new VSCodeVariantConfig
{
Id = "your-editor-id",
DisplayName = "Your Editor Name",
PathKeywords = new[] { "keyword1", "keyword2" }
});系统已预注册以下编辑器变体:
- Visual Studio Code
- Cursor
- Antigravity
- Trae / Trae CN
- Kiro
- Qoder
- Lingma
VSCodeVariantRegistry.RegisterVariant(new VSCodeVariantConfig
{
Id = "unique-id", // 唯一标识符
DisplayName = "Display Name", // 显示名称
PathKeywords = new[] { "keyword1", "keyword2" }, // 路径匹配关键字
ExecutablePattern = @"pattern.*\.exe$", // 可执行文件模式
PrereleaseKeywords = new[] { "insider", "preview" }, // 预发布关键字
CustomVersionDetector = (versionStr) => { // 自定义版本检测
// 自定义逻辑
return new Version(1, 0, 0);
}
});- 在Unity中创建一个空GameObject
- 添加
FinalValidationTest组件 - 右键组件 → "运行完整验证测试"
右键 FinalValidationTest 组件 → "性能基准测试"
// 初始化系统
VSCodeVariantRegistry.InitializeDefaultVariants();
// 注册新变体
VSCodeVariantRegistry.RegisterVariant(VSCodeVariantConfig config);
// 获取所有变体
IEnumerable<VSCodeVariantConfig> variants = VSCodeVariantRegistry.GetAllVariants();
// 路径检测
VSCodeVariantConfig detected = VSCodeVariantRegistry.DetectVariantByPath(string path);
// 候选路径检查
bool isCandidate = VSCodeVariantRegistry.IsCandidateForDiscovery(string path);VSCodeVariantRegistry.RegisterVariant(new VSCodeVariantConfig
{
Id = "zed",
DisplayName = "Zed",
PathKeywords = new[] { "zed" }
});var editors = new[]
{
new VSCodeVariantConfig { Id = "lapce", DisplayName = "Lapce", PathKeywords = new[] { "lapce" } },
new VSCodeVariantConfig { Id = "helix", DisplayName = "Helix", PathKeywords = new[] { "hx", "helix" } }
};
foreach (var editor in editors)
{
VSCodeVariantRegistry.RegisterVariant(editor);
}VSCodeVariantRegistry.RegisterVariant(new VSCodeVariantConfig
{
Id = "custom-editor",
DisplayName = "Custom Editor",
PathKeywords = new[] { "myeditor" },
CustomVersionDetector = (version) => {
// 处理特殊版本格式
return Version.Parse(version.Replace("v", ""));
}
});- 命名空间冲突:系统已处理
Debug类的命名空间歧义 - 线程安全:注册操作是线程安全的
- 性能优化:路径检测使用优化的算法
- 错误处理:完善的参数验证和异常处理
- ID 使用小写字母和连字符:
my-editor - DisplayName 使用清晰的英文名称
- PathKeywords 选择具有唯一性的关键字
- 避免注册过多相似的关键字
- 合理使用自定义版本检测器
- 批量操作时考虑延迟注册
Q: 添加的编辑器没有被发现? A: 检查 PathKeywords 是否准确匹配实际安装路径
Q: 版本显示不正确? A: 使用 CustomVersionDetector 处理特殊版本格式
Q: 系统响应慢? A: 运行性能基准测试,检查注册的变体数量
// 查看所有已注册的变体
foreach (var variant in VSCodeVariantRegistry.GetAllVariants())
{
Debug.Log($"已注册: {variant.DisplayName} (关键字: [{string.Join(", ", variant.PathKeywords)}])");
}
// 测试路径匹配
var result = VSCodeVariantRegistry.DetectVariantByPath(yourTestPath);
Debug.Log($"检测结果: {result?.DisplayName ?? "未匹配"}");系统基准测试结果(仅供参考):
- 1000个变体注册:< 50ms
- 10000次路径检测:< 200ms
- 平均单次检测:< 0.02ms
- 内存占用:< 5MB(1000个变体)
UnityCoder - 让编辑器集成变得更简单!