CONTRIBUTING¶
Warning
在 v1.0.0 版本前,API 可能随时改变。不推荐依赖 Odin Toolkits API,建议仅作为编辑器工具使用。
贡献准备¶
fork 项目到自己的仓库,clone 到本地。
Warning
首次打开时报错为正常现象,因为项目本身并不包含 Odin Inspector 插件。请无视错误进入项目后,自行导入 Odin Inspector 插件。
如有其他问题,请邮箱联系。
Odin Toolkits 集成模块贡献指南¶
代码样式规范¶
Odin Toolkits代码样式基于 Rider 默认的代码样式。- 修改常量命名样式为
ALL_UPPER,完全大写样式。 换行/特性的排列中,除了记录字段以外,其他情况特性均独占一行,设置为从不。文件布局中使用Unity/带区域的默认值。
- 修改常量命名样式为
其他要求¶
静态变量要求兼容 Play Mode,尤其是运行时的静态变量,需要手动处理初始化,避免用户在 Play Mode 时出错。
注意事项¶
推荐贡献者在脚本最上方添加贡献注释,包括但不限于名称,邮箱,贡献时间,采用后将持续保留在脚本中。
此模块由 Odin Toolkits 核心开发者维护。
Community 社区模块贡献指南¶
贡献规范¶
- 尽量以单个文件夹的形式贡献
- 在用户不主动使用的情况下,不能影响运行逻辑,不影响其他模块的正常使用。可以有后台自动运行的实例,比如场景单例。
- 删除相关文件夹不报错,不会导致项目运行时错误。
- 编辑器扩展方面尽量使用
Odin Inspector,可以给其他开发者参考,学习Odin Inspector的使用。 - Community 模块的代码样式无要求,选择你喜欢的方式,但是保持一致性,推荐采用 Rider 设置
编辑器/代码样式/C#/文件布局/Unity/带区域的默认值。 - 只包含
Odin Toolkits集成模块和Community模块的新项目打包无警告或错误。 - 静态变量要求兼容
Play Mode,尤其是运行时的静态变量,需要手动处理初始化,避免用户在Play Mode时出错。
静态变量兼容 Play Mode 示例¶
运行时静态变量初始化
// 使用 [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)] 初始化静态变量
public class StaticCounterExampleFixed : MonoBehaviour
{
static int counter = 0;
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]
static void Init()
{
Debug.Log("Counter reset.");
counter = 0;
}
// 每帧调用一次 Update
void Update()
{
if (Input.GetButtonDown("Jump"))
{
counter++;
Debug.Log("Counter: " + counter);
}
}
}
运行时静态事件订阅处理
using UnityEngine;
// 使用 [RuntimeInitializeOnLoadMethod] 初始化静态事件订阅处理
public class StaticEventExampleFixed : MonoBehaviour
{
[RuntimeInitializeOnLoadMethod()]
static void RunOnStart()
{
Debug.Log("Unregistering quit function");
Application.quitting -= Quit;
}
void Start()
{
Debug.Log("Registering quit function");
Application.quitting += Quit;
}
static void Quit()
{
Debug.Log("Quitting the Player");
}
}
对于 Editor 脚本(比如自定义的 Editor 窗口或使用静态对象的 Inspector),使用 [InitializeOnEnterPlayMode] 属性来重置静态字段和事件处理程序。