【发布时间】:2014-12-20 10:36:24
【问题描述】:
我正在尝试从文件加载预制件并创建已加载文件的克隆而不实例化它。更改加载的克隆脚本的数据值,不应更改预制值。
我正在尝试创建克隆和加载的预制件的克隆。
使用 Resources.Load 将预制件加载到统一中:
enemy = new Player();
enemy.playerColor = Color.red;
enemy.Name = "enemy";
enemy.unitList.AddResources.Load("Prefab/Soldier", typeof(GameObject)) as GameObject);
使用实例化克隆功能加载预制件:
enemy = new Player();
enemy.playerColor = Color.red;
enemy.Name = "enemy";
enemy.unitList.Add(Instantiate(Resources.Load("Prefab/Soldier", typeof(GameObject)) as GameObject) as GameObject);
更改加载的预制件:
public void updateUnit(string prop, float val)
{
switch (prop)
{
case "Movespeed":
Movespeed += (int)val;
break;
case "SpawnRate":
SpawnRate += val;
break;
}
}
当前的问题是使用预制件上的实例化功能,在屏幕上创建克隆。虽然使用加载的预制件会导致预制件中的脚本发生变化
【问题讨论】:
-
您是否想过让您的预制件处于非活动状态?这样当你实例化它时,它就不会出现在屏幕上。另一种解决方案是将实例化的预制件放置在相机视图之外。您可以调用 Camera.main.ViewportToWorldPoint() 并给它一个低于 0 或高于 1 的 x 或 y 值,以将其定位在相机视图之外
-
是的,这将是一个粗略的解决方法。我还考虑过让启动脚本重置预制件的“硬”编码值。