基础环境配置 - 旧
项目创建
在vs创建项目页面中我们需要选择这个:
注意要选带 .NET Framework
字样的, 蔚蓝的底层框架相对于目前的 .NET
已经很古老了, 所以可能会被稍微特殊点对待(, 之后在为项目命名的窗口中的项目框架记得精确选择 .NET Framework 4.5.2
.
如果你没有 .NET Framework 4.5.2
的选项请检查是否安装了此框架, 并且你选择的是带 .NET Framework
字样的类库项目.
当你创建完项目后, 你会得到一个代码文件 Class1.cs
, 它看起来像:
Class1.cs | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
添加对蔚蓝的引用
因为我们是蔚蓝 mod 嘛, 所以肯定得依赖一些蔚蓝的东西, 即依赖于蔚蓝的程序集. 具体操作来说:
- 在解决方案视图窗口你的项目下的
引用
上右击 - 选择
添加引用
- 在新的窗口选择左侧的
浏览
- 点击窗口右下角的
浏览
- 完成后在弹出的文件选择框中选择以下几个在蔚蓝根目录下的文件:
Celeste.exe
FNA.dll
MMHOOK_Celeste.dll
YamlDotNet.dll
对于 steam 版蔚蓝的目录通常会在
C:\Program Files (x86)\Steam\steamapps\common\Celeste
另外为了保证你的 mod 的跨平台性, 你的引用列表里 System
开头的只能包含:
System
System.Configuration
System.Core
System.Data
System.Drawing
System.Runtime.Serialization
System.Security
System.Xml
System.Xml.Linq
如果你的项目引用有其他 System
开头系列的引用, 并且它们不在上述列表上, 你需要将其移除(右键->移除).
添加 Module 类
ok在我们一番折腾下我们终于可以开始来写代码了, 那么首先把你的 Class1.cs
重命名成 (你的mod名)Module.cs
, 比如这里我的 mod 名叫 MyCelesteMod
, 那么这个文件最好叫做 MyCelesteModModule.cs
, 这是为了方便日后开发能一眼识别出这是我们最早期创建的那个关键类.
如果你的 vs 提示你是否重命名标识符, 你可以选是, 这样那个文件里的
Class1
类名也会帮你重命名
那么同样地对这个文件里的类的名字也重命名, 然后我们让这个类继承于 EverestModule
.
如果出现了未命名标识符的错误, 请检查你是否正确引用了
Celeste.exe
并且 using 了Celeste.Mod
命名空间
EverestModule
是一个抽象类 ,那么现在我们需要加入两个方法以实现它, 同时让vs闭嘴.
MyCelesteMod.cs | |
---|---|
1 2 3 4 5 6 7 |
|
Load
方法会在 Everest 加载你的 Mod 时被调用
Unload
方法会在 Everest 卸载你的 Mod 时被调用
在这里我们会写个类似 Hello world 的东西, 即在 Load
里打印些话. em, 可能不是你期望的 Console.WriteLine
而是 Logger.Log
, 就像这样:
1 |
|
这是一个蔚蓝底层框架 Monocle
引擎里的一个静态类, 在之后我们会介绍蔚蓝中常见类的使用. 下面是这个方法的参数列表:
- 第一个参数: 这句日志的等级, 这里我们先选
Info
. - 第二个参数: 这句日志的
Tag
, 通常它是你的 Mod 名字 - 第三个参数: 我们希望输出的话
那么你现在的代码应该是大概这样子的:
MyCelesteMod.cs | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
现在, 按下 Ctrl + B
, vs 应该会启动编译.
你会遇到一个关于
x86
与AnyCpu
架构不符的警告, 这里我们先忽略它并在后面解决.
编译完成, 我们就可以找到我们编译出来的新鲜的程序集: <你的项目名>/<你的项目名>/bin/Debug/<你的项目名>.dll
, 你的 vs 的输出窗口也应该会写上这个 dll 的完整路径.
让 Everest 加载
以上一顿操作过后你会发现你的蔚蓝什么也没发生(乐). 因为我们还没告诉它让它加载我们的 mod! 为了让 Everest 加载我们的 mod, 其中一个方法就是在蔚蓝的 Mods 文件夹里面新建一个文件夹, 并放入我们的 mod 文件, 它的名字我们最好就是项目名字, 比如 MyCelesteMod
, 然后在这里写一份 everest.yaml
文件, 它包含我们 mod 的一些基本信息:
everest.yaml | |
---|---|
1 2 3 4 5 6 |
|
mod名字
: 推荐为项目名比如 MyCelesteMod
- 版本
: 由于是开发早期, 所以版本推荐指定为0开头的 0.1.0
- 依赖的 everest 版本
: 这里填你的 everest 版本就行了, 比如说如果你是 3876 那么这里应该写 1.3876.0
- Dll 位置
: 我们先把之前编译的新鲜MyCelesteMod.dll
, ok, everest.yaml
里要写的 dll 位置是相对于这个文件夹的, 我们就放在它里面第一层, 所以我们直接写 MyCelesteMod.dll
就行了.
现在你的那个文件夹现在可能长这个样子:
- MyCelesteMod
- MyCelesteMod.dll
- everest.yaml
everest.yaml可能长这个样子:
everest.yaml | |
---|---|
1 2 3 4 5 6 |
|
ok, 在启动之前我们还要干最后一件小事, 就是我们的日志, 它打印在文件里同时也打印在控制台里, 日志文件翻阅比较麻烦, 所以为了日后方便调试, 我们还是先让蔚蓝启动的同时启动一个控制台好一点. Everest 已经为我们做了这件事了, 我们要做的只是在蔚蓝exe同目录下找到everest-launch.txt
, 没找到也没关系, 新建一个就可以了, 然后在里面写上--console
, 是的就这一小点东西, 然后我们保存, 启动蔚蓝!
启动后你应该会同时看到一个控制台窗口, 扫视一下:
console output | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|