参考数据库设计SO类
这是PCR数据库里的一行技能数据
这是PCR数据库里的一行技能动作
我想 如果是客户端的话 我是不是可以做成单独的配置文件,于是我就开始随意的写SO类
技能动作类
using UnityEngine;
[CreateAssetMenu(fileName = "new SkillAction", menuName = "Skill/Action", order = 1)]
public class SkillActionSO : ScriptableObject
{
[SerializeField]
private int _actionID;
[SerializeField]
private int _classID;
[SerializeField]
private ActionTypeSO _actionType;
[SerializeField]
private TargetTypeSO _targetType;
[SerializeField, TextArea]
private string _description;
[SerializeField, TextArea]
private string _levelUpDisp;
}
动作类型抽象类
using UnityEngine;
public abstract class ActionTypeSO : ScriptableObject
{
}
目标类型抽象类
using UnityEngine;
public abstract class TargetTypeSO : ScriptableObject
{
}
创建SO子类
开始创建SO文件进行配置
配置技能
技能数据 ← 技能动作1 ← 动作类型
← 目标类型
← 技能动作2 ← 动作类型
← 目标类型
如果需要创建一个技能数据,需要创建多个“Action的SO文件”,每个Action需要“一个ActionType与TargetType的SO文件”。
比如佩可的午餐时间技能,有2个Action,1个是自身防御力提升,1个是回复生命值,就需要创建6个SO文件
如果是按现在的方式去配置技能
根据PCR的数据库得知1个技能数据最多有7个Action
1个角色有1个UB技能 2个主技能 1个EX技能,每个技能还有对应的升级版本
首先要创建多个ActionType子类与TargetType子类
其次SO文件很难复用,就是说几乎每个技能动作都要创建单独的ActionType与TargetType的SO文件
我思考的解决方式
1. 与数据库的设计一致
去掉ActionType类与TargetType类,在对应的字段写数据,但是这种方式对配置人员不友好,想要更直观的方式。
我认为的优点与缺点
- 优点
- 同步数据库
- 更容易文档编辑
- 缺点
- 没必要写SO类了,同步excel(存为JSON)或数据库,直接从数据库或者JSON文件中获取
- 写参数都得参考设计文档
- 不适合小项目快速开发
2. 参考JSON,将数据以键值对方式存储
假如我用JSON去保存技能数据,大概会是这个样子
{
"SkillID": 1058002,
"Name": "午餐时间",
"SkillType": 0,
"SkillAreWidth": 0,
"SkillCastTime": 0.21,
"Actions":