我有一个附带了Cube脚本的多维数据集预制件。该脚本的公共整数变量默认为3。
public class Cube : MonoBehaviour
{
public int A = 3;
}
在另一个脚本中,我引用了该预制件(通过拖入检查器)。然后将其变量更改为10:
public class GameManager : MonoBehaviour
{
public Cube cube;
void Start()
{
cube.A = 10;
}
}
所以问题是:我刚刚更改了哪些对象?这不是预制件,因为正如我在Assets文件夹中看到的那样,预制件的变量保持不变。
答案 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;
}
输出
注意:对预制件的修改仅在运行时持续存在。之后它将恢复为默认值。