首页 > 解决方案 > 我可以使实例变量独立于预制变量吗?

问题描述

所以我有一个预制件,在我的关卡中有一堆实例。每个实例都有自己的属性,这些属性通过脚本在编辑器中设置。其中一个属性设置游戏对象的位置。但是,每当我按下播放键时,所有实例都默认返回 (0, 0),这是预制件上的默认值。当我按下播放而不是转到预制值时,如何使实例保持其对编辑器的位置?

编辑:澄清一下:我有一个 8x8 网格,我将我的对象放入其中。我创建了一个变量“pos”,它存储了一个从 (0,0) 到 (8,8) 的 Vector2。“pos”变量改变对象的变换位置。例如,如果我设置 pos = (0,0),则对象将转到 (-4,4)。我所有对象的默认 pos 值为 (0,0)。当我将对象拖到游戏中(在编辑器中)时,它会更改 pos 和变换值。当我进入播放模式时,位置恢复到 (0,0),因此所有对象都移动到 (-4,4)。我防止这种情况的唯一方法是手动更改每个对象的 pos 值,使变量加粗,然后它不会恢复。有没有办法可以使 pos 值永远不会恢复?(始终与 Prefab pos 值分开)

这是当我将对象拖入场景时更改“pos”变量的代码:

private void ChangePosition()
{
    t.position = new Vector2(Mathf.Round(t.position.x * 2) / 2, Mathf.Round(t.position.y * 2) / 2);
    gridPosition.Set(Convert.ToInt32(4.5f + t.position.x), Convert.ToInt32(4.5 - t.position.y));
    tile.pos = gridPosition;
}

当我在编辑器中时,pos 变量会正确更改,但是当我按下播放时,它会将 pos 更改为 (0,0),因为这是 prefab 的 pos。

标签: unity3d

解决方案


推荐阅读