从脚本(Unity)更改预制字段

时间:2019-03-05 23:09:53

标签: c# unity3d

我有一个附带了Cube脚本的多维数据集预制件。该脚本的公共整数变量默认为3。

public class Cube : MonoBehaviour
{
   public int A = 3;
}

在另一个脚本中,我引用了该预制件(通过拖入检查器)。然后将其变量更改为10:

public class GameManager : MonoBehaviour
{
    public Cube cube;

    void Start()
    {
        cube.A = 10;
    }
}

所以问题是:我刚刚更改了哪些对象?这不是预制件,因为正如我在Assets文件夹中看到的那样,预制件的变量保持不变。

1 个答案:

答案 0 :(得分:1)

在这种情况下,您实际上是在运行时修改预制件。我设置了一个快速测试来证明这一点。我将Cube的{​​{1}}和cubePrefab字段的cubeComponent预制件拖到检查器中,并将相同的GameManager1预制件拖入了检查器中。 Cube的{​​{1}}字段。

在开始游戏时,cubePrefab将预制的GameManager2组件修改为10而不是3。然后生成预制件和实例,并打印其GameManager1值,显示是10。

一秒钟后,Cube生成A预制实例,并打印其GameManager2值,该值也最终为10。

Cube.cs

Cube

GameManager1.cs

A

GameManager2.cs

public class Cube : MonoBehaviour
{
    public int A = 3;
}

输出

enter image description here

注意:对预制件的修改仅在运行时持续存在。之后它将恢复为默认值。