我想知道实现以下目标的最佳方法是什么(如果甚至可以通过Unity3D实现), 我有一个包含脚本组件的对象,该脚本组件具有一个序列化的类,该类具有4个字段,即Int,Long,String,Float。
public DataToSave dataToSave;
[System.Serializable]
public class DataToSave{
int lives = 1;
long money = 1;
string name = "1";
float accuracyPercentge = 1.0f;
}
我现在希望在“编辑器”脚本上创建一个工具,该工具将允许我选择类型,名称和默认值,例如(int,“ numOfFriends”,3),然后运行它可以操作序列化的测试类,以便该类现在将在其中具有一个新的int字段,并且将如下所示:
[System.Serializable]
public class dataToSave{
int lives = 1;
long money = 1;
string name = "1";
float accuracyPercentge = 1.0f;
int numOfFriends = 3;
}
其背后的原因是在编辑器中创建一个可扩展的参数序列化类,因此以后每次我想向对象添加字段时,我要做的就是分配编辑器脚本中提到的3个字段,而不是直接进入代码并手动更改类。
这可以做吗?您能想到更好的实现方式来创建这种动态系统吗? 考虑可能的解决方案时,我唯一想到的就是手动将文件读入流/字符串,定位类并以正确的位置写入文件,但这似乎有些混乱。
这种尝试不限于序列化的类实现,我正在寻找在编辑器级别创建动态参数系统的任何可能的方法,我的另一种选择是创建一个包含4个keyValue对列表的类,每个列表用另一种类型,
List<keyValuePair(int,string)>() intFields;
List<keyValuePair(float,string)>() floatFields;
List<keyValuePair(string,string)>() stringFields;
List<keyValuePair(long,string)>() longFields;
,然后在Editor脚本上根据选定的Enum类型将一个元素添加到正确的列表中,但是由于我试图尽可能地提高效率,所以我不想在那里为每种可能的类型创建一个List甚至创建一个最终将只有一个键值对的列表。