C# 用于修改类属性的Unity编辑器脚本
我创建了一个名为Int2的结构的长数组(基本上只包含一个x&y int)。我使用了C# 用于修改类属性的Unity编辑器脚本,c#,unity3d,C#,Unity3d,我创建了一个名为Int2的结构的长数组(基本上只包含一个x&y int)。我使用了[System.Serializable]指令,结构工作正常/在编辑器中显示,等等。数组在一个类中,附加到我每个场景中的一个空游戏对象 为了节省一些繁琐的工作,我创建了一个编辑器脚本来填充这些列表,它似乎可以很好地更改这些值。但是,当我进入播放模式或重新加载场景时,更改会恢复。保存场景和项目没有任何区别。该数组称为“waveBotTypes” [MenuItem("F_Tools/Wave_20_easy")] s
[System.Serializable]
指令,结构工作正常/在编辑器中显示,等等。数组在一个类中,附加到我每个场景中的一个空游戏对象
为了节省一些繁琐的工作,我创建了一个编辑器脚本来填充这些列表,它似乎可以很好地更改这些值。但是,当我进入播放模式或重新加载场景时,更改会恢复。保存场景和项目没有任何区别。该数组称为“waveBotTypes”
[MenuItem("F_Tools/Wave_20_easy")]
static void Wave20Easy()
{
F_LevelManager lvl = Selection.activeTransform.GetComponent<F_LevelManager>();
lvl.numberOfWaves = 20;
lvl.waveBotTypes = new Int2[20];
for(int x = 0; x < 20; x++)
{
lvl.waveBotTypes[x] = new Int2((int)(x * 1.5) + 5, Random.Range(0, (int)(x / 5)));
}
}
[MenuItem(“F_工具/Wave_20_轻松”)]
静态无效Wave20Easy()
{
F_LevelManager lvl=Selection.activeTransform.GetComponent();
lvl.numberOfWaves=20;
lvl.waveBotTypes=new Int2[20];
对于(int x=0;x<20;x++)
{
lvl.waveBotTypes[x]=新的Int2((int)(x*1.5)+5,随机范围(0,(int)(x/5));
}
}
你知道如何让这些价值观保持不变吗?谢谢。首先将它们声明为公共,并在编辑器更改值后保存预置。我使用这种方法,谢谢,这是可行的,尽管我需要为每个场景设置不同的预设以获得不同的值,因为预设实际上是不必要的。我保存它们是因为我不想意外丢失数据。一个人很容易把事情搞砸。