0

我有一个包含一些数据的 SO:

[CreateAssetMenu(fileName = "Map Information", menuName = "Map", order = 0)]
public class Map : ScriptableObject
{
    public Terrain[] tiles;
}

地形是一个类:

public class Terrain
{
 //things and functions
}

问题是,当我获得此 SO 的引用并将其中一些地形传递给其他类和脚本时,当我编辑这些 SO 时保留这些更改,我尝试将 Terrain 设为结构,但它不起作用并继续保留变化。

4

1 回答 1

0

默认情况下,C# 通过引用传递对象,这意味着当您对其中一个对象进行更改时,代码中对象的所有引用都会更新,如果您想要 Terrain 的克隆,那么您可以将以下函数添加到您的 Terrain班级:

public Terrain Clone()
{
    return (Terrain)this.MemberwiseClone();
}

之后,如果您需要阵列中的地形而没有任何更改影响原始地形,那么您可以使用以下内容:

Terrain terrain = Terrain[0].Clone();
// the original terrain will remain unaffected if any changes are made to this
于 2021-08-17T18:06:58.270 回答