Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于修改类属性的Unity编辑器脚本_C#_Unity3d - Fatal编程技术网

C# 用于修改类属性的Unity编辑器脚本

C# 用于修改类属性的Unity编辑器脚本,c#,unity3d,C#,Unity3d,我创建了一个名为Int2的结构的长数组(基本上只包含一个x&y int)。我使用了[System.Serializable]指令,结构工作正常/在编辑器中显示,等等。数组在一个类中,附加到我每个场景中的一个空游戏对象 为了节省一些繁琐的工作,我创建了一个编辑器脚本来填充这些列表,它似乎可以很好地更改这些值。但是,当我进入播放模式或重新加载场景时,更改会恢复。保存场景和项目没有任何区别。该数组称为“waveBotTypes” [MenuItem("F_Tools/Wave_20_easy")] s

我创建了一个名为Int2的结构的长数组(基本上只包含一个x&y int)。我使用了
[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));
}
}

你知道如何让这些价值观保持不变吗?谢谢。

首先将它们声明为公共,并在编辑器更改值后保存预置。我使用这种方法,谢谢,这是可行的,尽管我需要为每个场景设置不同的预设以获得不同的值,因为预设实际上是不必要的。我保存它们是因为我不想意外丢失数据。一个人很容易把事情搞砸。