Blade虚模块和开发环境
我希望此文档可帮助无改装经验者快速配置开发环境,或帮助有经验的开发者提高工作效率。
初始准备
- 安装 Visual Studio Code(VSCode) 编辑器
下载:https://code.visualstudio.com/Download- 运行 VSCode,点击侧边栏的扩展(快捷键Ctrl + Shift + X)
你可以搜索并安装你需要的语言包(例如 Chinese/Russian)
然后安装Python
和Pylance
扩展
- 运行 VSCode,点击侧边栏的扩展(快捷键Ctrl + Shift + X)
- 安装 Python(版本>=3.8)
下载:https://www.python.org/downloads/windows/- 安装完毕后打开命令行窗口(按 Win + R 后运行
cmd
)
然后在命令行中安装Bladex
包
pip 是 Python 包管理工具,内置于 Python3.4 及之后版本pip install Bladex
- 安装完毕后打开命令行窗口(按 Win + R 后运行
做完这些,很快就可以享受 Bladex 的代码自动补全和类型提示了 🎉
🚀 快速开始
- 将游戏根目录拖动到 VSCode 窗口,意思是将文件夹添加到工作区,后续称为项目根目录。
- 右键项目根目录并新建文件夹,名称为
.vscode
- 在.vscode 中创建文件
settings.json
(此时文件的路径应该是Blade of Darkness/.vscode/settings.json
) - settings.json 文件内容如下:
{
// "python.analysis.ignore": ["*"],
// 启用类型检查
"python.analysis.typeCheckingMode": "basic",
// 忽略部分错误提示
"python.analysis.diagnosticSeverityOverrides": {
"reportShadowedImports": "none",
"reportUnboundVariable": "none",
"reportOptionalMemberAccess": "none",
"reportUnusedExpression": "none"
},
// 额外模块分析路径
"python.autoComplete.extraPaths": [
"${workspaceFolder}/Scripts",
"${workspaceFolder}/Scripts/Biped",
"${workspaceFolder}/Scripts/Combos",
"${workspaceFolder}/Lib",
"${workspaceFolder}/Lib/AnmSets",
"${workspaceFolder}/Lib/Widgets",
"${workspaceFolder}/Lib/PythonLib",
"${workspaceFolder}/Lib/PythonLib/lib-tk",
"${workspaceFolder}/Lib/PythonLib/DLLs",
"~/AppData/Local/Programs/Python/Python39/Lib/site-packages/Bladex/__ext__"
],
"python.analysis.extraPaths": [
"${workspaceFolder}/Scripts",
"${workspaceFolder}/Scripts/Biped",
"${workspaceFolder}/Scripts/Combos",
"${workspaceFolder}/Lib",
"${workspaceFolder}/Lib/AnmSets",
"${workspaceFolder}/Lib/Widgets",
"${workspaceFolder}/Lib/PythonLib",
"${workspaceFolder}/Lib/PythonLib/lib-tk",
"${workspaceFolder}/Lib/PythonLib/DLLs",
"~/AppData/Local/Programs/Python/Python39/Lib/site-packages/Bladex/__ext__"
]
}
~/AppData/Local/Programs/Python/Python39
是 Python 3.9.x 的安装路径,如果你安装的是不同版本,则需修正路径。
只需修改Python39
部分,例如 py3.10 版本是 Python310,py3.11 是 Python311
至此,你已经可以享受几乎所有模块的代码自动补全功能了!
任意路径的项目如何配置
如果你的项目不是位于游戏目录下(例如D:/MyProject
),当它作为项目文件夹添加到工作区时,
只需复制文件Blade of Darkness/.vscode/settings.json
到D:/MyProject/.vscode/settings.json
,
然后将${workspaceFolder}
修改为游戏根目录的绝对路径。
🧩 示例图像
💖 进一步优化编码体验
忽略错误提示
由于 BoD 使用的 Python 版本是 1.5.2,一些落后的语法会被 IDE 认为是语法错误,例如print
关键字。
可以在settings.json
中添加一行以忽略所有文件中的错误,如果你使用的是本文档提供的设置内容,只需在文件开头取消对它的注释。
"python.analysis.ignore": ["*"],
但同时也失去了 IDE 为你提醒例如参数不匹配等问题
另一种方式是添加行尾注释# type: ignore
print "1" # type: ignore
这只有一行起作用,或者将注释放在文件开头,它将忽略整个文件。
格式化你的代码
格式化程序可提升代码的可读性,方便以后的阅读与修改。
我使用的 py 格式化程序是Black
和autopep8
。
在 VSCode 扩展商店搜索并安装 Black 扩展,然后在编辑窗口中右键配置格式化程序,
最后按快捷键"Shift + Alt + F"进行格式化。
但是 Black 无法格式化存在语法错误的文档,因此当文档中使用的是print "1"
关键字而不是函数print("1")
的话将无法被格式化程序处理。
autopep8 可以处理存在语法错误的文档,但 VSCode 的 autopep8 扩展同样无法处理语法错误的文档。
解决方案是使用 autopep8 的命令行版本,以下是配置一个 VSCode 任务来一键执行 autopep8 格式化文档:
-
在命令行安装 autopep8
pip install autopep8
-
在项目根目录创建文件
.vscode/tasks.json
,内容如下:
{
"version": "2.0.0",
"tasks": [
{
"label": "Run autopep8 for Blade",
"type": "shell",
"command": "autopep8",
"args": ["${file}", "-i"],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": []
}
]
}
完成!按 F1 显示命令框,输入tasks
,然后点击Tasks: Run Task
,选择任务Run autopep8 for Blade
以格式化 py 文件
这相当于在命令行执行autopep8 file.py -i
如果你想要部分代码无需格式化,可以使用特殊注解来标记
用 “fmt: off” 和 “fmt: on”
# fmt: off
# 这里的代码不会被自动格式化
# 你可以自由地编写和排列代码,而格式化工具将忽略这部分
var=1
# fmt: on
# 这里的代码将再次被格式化
💡 为什么类型提示不起作用?
图中的 inv 是一个未知变量,IDE 无法提示它的属性及方法。
这是因为变量"ent_name"没有类型注解,同样的"o"也是一个未知变量,IDE 无法给出正确的提示。
要告诉 IDE 变量"ent_name"是字符串类型可以使用以下语法:
def foo(ent_name: str):
但这是 py3.x 及以上版本中的有效语法,在旧版本中会导致语法错误。
解决方案是使用特殊注释,该注释需位于函数主体首行:
def foo(ent_name):
# type: (str) -> ...
o = Bladex.GetEntity(ent_name)
inv = o.GetInventory()
现在 IDE 可以正常提示类型了
旧版本的 py 解释器只会认为这是普通的注释,但 IDE 可以分析它们。
PS: 保持良好的编码习惯有助于减少错误并提高代码质量。
VSCode 快捷键
这几个快捷键可帮助开发者快速参考函数定义或可用的值。
- 触发建议:Ctrl + Space
若遇到输入法快捷键冲突,可将输入法的快捷键改成其它的
- 触发参数提示:Ctrl + Shift + Space
- 速览定义:Alt + F12
可快速浏览对象的其它属性
- 转到定义:F12