Yimi Client VSCE(BETA)
日常开发中,一些原本能批量处理和能被现代 IDE 支持的功能,因为种种原因需要用人工的手段处理,实在让人心累。为了处理这些问题所以本项目诞生。
Yimi Client VSCE,一款 Yimi 前端专属的 VSCode 插件,整合日常开发内部的痛点需求。Happy coding and let's MYGA(Make Yimi Grate Again)
[TOC]
Feature
已有特性如下:
命令功能
- UIBinding 组件提示
- Description 迁移(从另一个项目)
- 代码风格替换
- Prefab Text 批量初始化赋值
- Description 悬停提示
- 服务器枚举补齐
Snippets
Install
目前插件已上架 VSCode 的插件市场,所以可以在 VSCode 的插件里搜索 Yimi Client Tool
安装(更新)最新版本。当然也可以在 releases 中下载你需要的版本,然后通过 Install from VSIX
手动安装。
安装成功后目录位于
- Windows
%USERPROFILE%/.vscode/extensions
- macOS
~/.vscode/extensions
Configuration
在使用前,需要先进入插件设置界面,设置几个关键配置
配置 |
含义 |
clientId |
你在 Description.lua 的前两位 ID(如 27001000 即填 27 ),用于插入 Description.lua 描述时生成的 id 分配。 |
oldProjectPath |
旧项目的路径,如 E:\OldPrject\Client\project ,用于搬迁丢失的 Description |
curProjectPath |
当前项目目录,如 E:\MainVersion\Client\project |
branchProjectPath |
当前项目最新分支目录,如 E:\Branch\Client\project ,用于寻找丢失的 prefab 文字 |
Usage
大部分功能都可以通过 Ctrl+P
输入 >
后呼出指令面板,输入相应的指令名就能对当前打开脚本进行处理。
常用的功能推荐绑定快捷键,如推荐 F4
绑定 Switch Current Word To Description
。
UIBinding 组件提示
在存在 self.prefab = "xxxx.prefab"
的脚本中,输入 self.view.
就能得到提示
指令无,
Description 迁移(从另一个项目)
将当前脚本缺失的 Description Id 从另一个项目迁移到当前项目。该指令存在两个版本,File 和 Folder 针对当前文件和当前目录。
指令:Fix Description
,
慎用目录Fix Description(Folder)
,不要用于操作包含 Config 或 Description.lua 的目录。
代码风格替换
将就旧法转化为新写法。
指令:Change Code Style
Prefab Text 批量初始化赋值
Pefab 上的 Text 组件都只能默认为空格,一是为了多语言处理,二是降低一些 Text 初始化的内存占用。输入指令自动可以将 Prefab 上的文字批量插入到 OnCreateFinished 中赋值。
指令:Init Prefab Text
注意:Init Prefab Text
请确保 prefab 中包含文字,如果没有,你可能需要另一个版本Init Prefab Text(With Branch)
,需要从分支的 prefab 中获取文字用于赋值
文本转 DescriptionID & Description 悬停提示
将 ""
号包围的文本插入到 Description.lua
,并用一个新的 id 代替原文本。
指令:Switch Current Word To Description
鼠标放在 DescriptionID 上提示其代表的中文
服务器枚举补齐
将光标所在的服务器枚举补全。
指令:Fix Message Require
Snippets
内置丰富的代码模版,通过输入 --
触发 snippets。
目前支持 snippets 如下
触发 |
说明 |
--tabbar full |
创建全屏界面 Tabbar |
--tabbar |
创建 Tabbar |
--class annotation |
类注释 |
--class ui |
创建 UI 类 |
--tool tip show |
Manager 显示一个 Tooltip |
--list |
创建一个 List |
--loop list |
创建一个 List |
--super |
调用父类方法 |
--local util |
引用 UtilsManager |
--local config |
引用 ConfigManager |
--local cache |
引用cache |
--ui effect |
创建 UIEffect |
--local client const |
引用 ClientConst |
--track point |
添加红点组件 |
--select count |
创建 SelectCount |
--animation text |
创建 AnimationText |
--cd button |
创建倒计时按钮 |
--ui module |
创建 module |
--player name |
玩家名称 |
--jump ui |
UI 跳转 |
--ui model |
创建模型 |
--local table |
引用 tabble 常用方法 |
--function |
创建函数 |
--log time |
耗时打点 |
--local getconfig |
获取配置表 |
--class create |
创建类 |
--track point go |
红点 |
Development
如果你需要对插件补充功能,或想本地修改,请先按照官方教程先把开发环境搭建好。
Clone 项目后,就可以通过 VSCode 打开本项目。
- 点击调试(或快捷键
Ctrl+F5
)编译代码并开启 Debug。
- 每次改了源码,可以在 Debug 的 Host 窗口输入指令
> Develop reload
(或快捷键 Ctrl+R
)加载编译的代码。
如果想拓展功能参考已有方案或者官方案例
Python 版本限制为 3.9.10
项目结构如下
.
├── src/
│ ├── demo/ # 测试插件的脚本功能的资源
│ ├── extensions/ # 各个特性拓展
│ ├── utils/ # 通用工具
│ └── extension.ts # main,插件入口
├── python/ # 引用到的 python 脚本
├── snippets/ # 代码模版
├── shell/ # sh 脚本,自动化工具
└── package.json
开发语言选择
请务必选用 TypeScript.
~~对于开发插件语言的选取,虽然 TypeScript 是官方唯一指定语言,但还是建议采用 Python。Python 在日常开发中的适用度更高,建议在有一定 Python 基础后在考虑是否学习 TypeScript。~~
~~所以更快捷的开发插件手段是写一份 Python 的实现,然后在插件中调用即可。可以参考 DescriptionTranfer.ts。~~
生成安装包
在根目录调用指令
vsce package
发布
版本号分为三个部分 (major
, minor
, or patch
) ,通过指定这三个部分可以实现版本号自增并发布(publish 会自动 build)。
# 自增版本号并发布
vsce publish patch
# 或指定具体版本号
vsce publish 1.1.0
发布需要 Azure 的账号以及 token,非必要,你只需提交 Pull Request
即可,@newbility523 会合并到主版本并发布,自动发布方案也在规划中。
记得提交被自动修改了版本号的 package.json
snippest 补充
snippest 补充或修改请提交 issue
规范
开发功能时,请遵循项目预设结构进行开发。
其他
- 开发时请不要带有其他公司的信息,避免可能会出现的法律问题。
- 尽可能让工具能适配所有项目组的使用场景。
- 如果你有迫切的功能需求,可以提到 issues。
Todo
插件尚处于 Beta 阶段,比较迫切的需求是
- [ ] 更健壮的插件功能
- [x] 插件在线更新方案
- [ ] 插件自动发布方案
其他功能
- [x] 旧项目写法替换
- [x] 快捷创建组件模板
- [x] 快捷导入 prefab 预设文字
- [ ] 颜色替换
- [x] 可视化配置
- [x] 快捷键绑定
- [ ] 测试流程
- [x] ts or python?
- [x] UnityPrefabAnalyse 缓存
Contributors
前任栽树,后人乘凉,感谢大家的贡献。