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
Unity3d,将组件添加到资源中的预制_Unity3d - Fatal编程技术网

Unity3d,将组件添加到资源中的预制

Unity3d,将组件添加到资源中的预制,unity3d,Unity3d,有一次我在Unity玩资源系统时发现: 如果仅加载但未实例化预制,则说明: GameObject testObj = Resource.Load("testPrefab"); 您有一个名为“TestScript”的脚本,并将该脚本添加到testObj testObj.AddComponent<TestScript>(); testObj.AddComponent(); 运行并关闭它后,此TestScript仍将位于资源文件夹中的testPrefab内,如果再次运行,则资源文件夹

有一次我在Unity玩资源系统时发现:

如果仅加载但未实例化预制,则说明:

GameObject testObj = Resource.Load("testPrefab");
您有一个名为“
TestScript
”的脚本,并将该脚本添加到
testObj

testObj.AddComponent<TestScript>();
testObj.AddComponent();
运行并关闭它后,此TestScript仍将位于资源文件夹中的
testPrefab
内,如果再次运行,则资源文件夹中的
testPrefab
将有两个
TestScript
组件

我知道,
Resource.Load()
只是指向资源文件夹中的预置,没有复制


但是,如果说,在这个预置中放置一个
cleanpreafact()
函数,以确保它首先恢复到原始配置,然后根据需要添加其他组件,这是一个好主意吗?

不要修改预置。预制件用作可重复使用的对象。您不应该尝试修改它的原因有很多。其中之一是它将影响预置的实例化对象引用。对预制件进行修改后,无法保证您的关卡将按照预期的方式开始。这会把你的比赛搞砸的

您运行它,然后关闭它,这个测试脚本仍然在里面 资源文件夹中的TestPrefable,如果再次运行,则 资源文件夹中的TestPrefable将有两个TestScript组件

您描述的行为仅在编辑器中为真。一旦你建立了它,行为就完全不同了。在独立版本中,一旦重新启动程序,预置将自动重置自身。您真正要修改的是内存中加载的预置,而不是磁盘上存储的预置。还要注意,Resources文件夹中的所有内容都是只读的。它们不能被修改


如果直接修改预设,即使重新加载场景,它也会保留在内存中。只有在重新启动应用程序时,修改才会消失。不要修改预设

不要修改预制件。预制件用作可重复使用的对象。您不应该尝试修改它的原因有很多。其中之一是它将影响预置的实例化对象引用。对预制件进行修改后,无法保证您的关卡将按照预期的方式开始。这会把你的比赛搞砸的

您运行它,然后关闭它,这个测试脚本仍然在里面 资源文件夹中的TestPrefable,如果再次运行,则 资源文件夹中的TestPrefable将有两个TestScript组件

您描述的行为仅在编辑器中为真。一旦你建立了它,行为就完全不同了。在独立版本中,一旦重新启动程序,预置将自动重置自身。您真正要修改的是内存中加载的预置,而不是磁盘上存储的预置。还要注意,Resources文件夹中的所有内容都是只读的。它们不能被修改

如果直接修改预设,即使重新加载场景,它也会保留在内存中。只有在重新启动应用程序时,修改才会消失。不要修改预设