diff --git a/Docs/spec.md b/Docs/spec.md index f113e26..302c081 100644 --- a/Docs/spec.md +++ b/Docs/spec.md @@ -1,112 +1,36 @@ +# 项目规范 -# 代码与数据存储规范 +## 依赖库 -## 1. 命名空间规范 -所有代码必须位于命名空间 `Cell` 中。例如: -```csharp -namespace Cell -{ - // 所有类、接口、枚举等均需定义在此命名空间下 -} -``` +所有依赖库(通常为 dll 文件)皆统一放入`Clients/Assets/Plugins`文件夹。 -### 1.1 接口规范 -为了实现更方便的帧控制,受时刻影响的代码应选择实现以下接口之一或多个: -- **ITick**:适用于通用逻辑更新。 -- **ITickPhysics**:适用于物理相关逻辑更新(使用平稳的物理帧)。 -- **ITickUI**:适用于用户界面相关的逻辑更新。 +安装步骤: -首次启动需要调用Clock.Instance来初始化时钟 +1. 访问 [Nuget](https://www.nuget.org/),搜索目标依赖库,点击进入详情,选择最新稳定版(若一开始访问的是预览版),然后点击右侧的`Download package`。 +2. 找到下载好的包,以 zip 方式解压,找到`lib/netstandard2.0/依赖包名称.dll`,将其放入上述文件夹中,随后根据 Unity 控制台输出的错误信息(也就是`Unable to resolve reference '上游依赖库'. Is the assembly missing or incompatible with the current platform?`这样的信息),继续从 Nuget 下载其上游依赖库。 +3. 重复执行上述步骤,直到控制台不再输出错误信息,此时表明依赖已齐备,依赖库安装完成。 -#### 1.1.1 接口说明 -- **ITick** 和 **ITickPhysics** 受暂停影响。 -- **ITickPhysics** 使用系统提供的平稳物理帧进行更新。 -- **ITickUI** 不受暂停影响,始终在每一帧更新。 +## C# 脚本 -#### 1.1.2 示例代码 -```csharp -namespace Cell -{ - public class ExampleObject : ITick, ITickPhysics - { - public void Tick() - { - // 更新通用逻辑 - } +编写 C# 脚本时,应遵守一定的代码风格规范。以下为具体规范: - public void TickPhysics() - { - // 更新物理逻辑 - } - } -} -``` +1. 使用`var`声明变量,例如`var number = 1;`。当变量的声明与初始化无法同处一处时,应使用传统的前置类型声明(因为 C# 的`var`不支持基于上下文的类型推断)。 +2. 命名空间应与其所在目录对应。例如,若某文件处于`Scripts/Foo/Bar`目录,则其命名空间应为`namespace Foo.Bar {}`。若文件处于`Scripts`根目录,则无需额外添加命名空间。 ---- +## 数据 -## 2. 数据存储规范 +暂定使用 [JSON](https://www.json.org/) 存储数据与配置信息。后续可能会根据需要酌情添加对其他数据交换格式的支持。 -### 2.1 数据存储格式 -参考 RimWorld 的数据存储格式,本体和 Mod 的数据均使用 XML 文件存储,并支持动态加载。 - -#### 2.1.1 文件夹结构 -程序启动时会读取以下两个文件夹中的 XML 文件: -- **Data 文件夹**:存放本体的核心数据。 -- **Mods 文件夹**:存放 Mod 提供的扩展数据。 - -#### 2.1.2 XML 文件根属性规范 -XML 文件的根节点必须包含以下两种属性之一: -- **Define**:表示此 XML 文件定义的是一个数据类型。 -- **About**:表示此 XML 文件是 Mod 的介绍信息。 -- **Translation**:表示此 XML 文件是翻译文件。 - -#### 2.1.3 示例 XML 文件 - -##### 定义数据类型 (Define) -```xml - - - class1 - - value - - - ... - - - ... - - class1 - - -``` - -##### Mod 介绍 (About) -```xml - - AuthorName - This is a description of the mod. - -``` - -##### 翻译文件 (Translation) -```xml - - 苹果 - Value2 in English - -``` - ---- - -## 3. 动态加载流程 - -### 3.1 启动时加载 -程序启动时,按以下顺序加载数据: -1. **加载 Data 文件夹**:读取并解析核心数据。 -2. **加载 Mods 文件夹**:依次读取每个 Mod 的 XML 文件,动态加载 Mod 数据。 - -#### 3.1.1 加载优先级 -由加载列表确定加载优先级 +## 提交 +为规范开发流程,我们制定了以下几条规则: +1. 提交更改时,评论文本格式应为`(PART) COMMENT`。 + - `PART`表明更改部分,如`client`(表明更改的是客户端部分)和`tools`(表明更改的是工具部分)等。 + - `COMMENT`表明更改详情,用简练的语言描述更改内容。 + - 如果提交性质符合以下几种,则评论格式如下: + - 功能添加:`feat:xxx` + - 漏洞修复:`fix:xxx` + - 日常维护:`chore:xxx` +2. 请确保你的提交为原子提交(即不可再分割成数个部分的提交),以便项目维护。 +3. 除策划案等此类文档(一般这类文档使用 Word 撰写),其他类型文档请使用 Markdown 撰写。