首页 > 解决方案 > 在一个场景中更改一个对象会在 2 中更改它

问题描述

我正在使用 Unity,并且我有一个带有平板电脑的场景。我复制了这个场景并更改了一些东西,但除了一些纹理更改之外,它还是相同的场景。在第二个场景中,我将平板电脑上的动画更改为不同的动画,效果很好。但回到第一个场景,我发现它改变了两个场景的动画。我有很多引用平板电脑对象和脚本名称的脚本,所以有什么方法可以解决这个问题,而不必重新制作平板电脑和所有脚本?我没有对象预制件。而且动画完全不同。唯一共享的是对象名称和脚本。

标签: c#objectscene

解决方案


为了解决您的问题,您需要为每个平板电脑制作两个不同的动画。

假设您将动画 1 应用于平板电脑 1,您复制所有内容,现在您拥有带有动画 1 的平板电脑 2,如果您在处理场景 2(使用平板电脑 2)时编辑动画 1,场景 1(使用平板电脑 1)将自动受到影响,因为它也指的是相同的动画 1

所以你需要做的是: - 制作两个单独的动画:动画 1 和动画 2 - 为每个平板电脑分配不同的动画

最后,您可以应用两种方法:

  1. 在您的代码中,您需要创建一个字段,允许您控制触发/使用哪个动画或动画控制器(google it)

或者

  1. 您可以在一个控制器上添加两个动画剪辑并控制一个布尔值(或整数),它将选择触发哪一个,如下图所示:

首先,制作 2 个单独的动画: 在此处输入图像描述

然后,转到动画师,右键单击并添加空状态,然后右键单击它并设置为图层默认状态链接到您拥有的两个动画

在此处输入图像描述

转到参数-> 添加一个新的布尔值,使一个转换为真,另一个为假

在此处输入图像描述

在此处输入图像描述

最后,您可以在代码中执行以下操作:

添加public bool animationtype您可以从检查器控制(如果将其设置为 true 动画 1 将播放,如果 false 动画 2 将播放),您可以使用:

whatevername.SetBool("whatevername", animationtype);

如果您有两个以上的动画,请考虑使用整数而不是布尔值。


推荐阅读