unity3d - 我可以使实例变量独立于预制变量吗?
问题描述
所以我有一个预制件,在我的关卡中有一堆实例。每个实例都有自己的属性,这些属性通过脚本在编辑器中设置。其中一个属性设置游戏对象的位置。但是,每当我按下播放键时,所有实例都默认返回 (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。
解决方案
推荐阅读
- javascript - 如何通过事件侦听器将按键值传递给函数?
- c - GCC编译的二进制文件中的冗余寄存器值?
- c# - 登录时 LoggedInTemplate 不显示(改为显示 AnonymousTemplate)
- vagrant - 在 windows server 2016 标准中运行 Vagrant
- python - 在Python中将算术序列转换为切片
- linux - 关于信号处理程序中的非信号安全系统调用
- python - 使用多重继承时 PyQt5 中的 MRO 错误
- python - 无法将 pytorch 安装到我的 anaconda 虚拟环境
- c - 当 Source 和 Include 在子目录中时如何编写 Makefile
- javascript - 使用 jest 测试没有回调的异步函数