通过编辑器脚本

时间:2019-04-24 18:00:12

标签: c# unity3d

我想知道实现以下目标的最佳方法是什么(如果甚至可以通过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甚至创建一个最终将只有一个键值对的列表。

0 个答案:

没有答案