更改一个场景中的对象会将其更改为2

时间:2018-06-06 01:21:58

标签: c# object scene

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

2 个答案:

答案 0 :(得分:0)

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

我们假设您已将动画1应用于平板电脑1 你复制了所有东西,现在你也有了带动画1的平板电脑2 现在,如果您在场景2(平板电脑2)上工作时编辑动画1,场景1(平板电脑1)将自动受到影响,因为它也指的是同一个动画1

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

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

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

    1. 您可以在一个控制器上添加两个动画片段,并控制一个布尔(或整数),它将选择触发哪一个,如下图所示:
    2. 首先,制作2个单独的动画: enter image description here

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

      enter image description here

      转到参数 - >添加一个新的布尔值,使其中一个转换为true,另一个为false

      enter image description here

      enter image description here

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

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

      whatevername.SetBool("whatevername", animationtype);
      

      如果您有两个以上的动画,请考虑使用Integer而不是Boolean。

答案 1 :(得分:0)

感谢Sara Kat的出色回答,虽然这不是我的问题的解决方案。我犯了一个很无聊的错误,我创建了一个新的动画和对象,但我使用了相同的动画控制器。如果其他人遇到此问题,请确保您创建了一个新控制器以及一个新动画