关于播放多个对象动画的算法

时间:2017-10-24 06:53:44

标签: animation unity3d

我目前正在开发一个项目,在我的场景中实例化3d模型,并允许用户在按钮点击时播放他们的动画。但是,在我当前的代码中,它只播放它检测到的第一个对象的动画,即使周围还有其他对象。我想播放场景中所有对象的动画。这是我当前代码的一部分。这是单击按钮后将启动的方法。

 public void PlayAnimation()
 {

     if (GameObject.FindGameObjectWithTag ("3DObject).name.Contains ("Spidey"))
     {
         int spideyAnimation =  Random.Range(0, spideyAnimations.Length);
         GameObject.FindGameObjectWithTag ("3DObject").GetComponent<Animation> ().Play (spideyAnimations[spideyAnimation]);

     }

     if (GameObject.FindGameObjectWithTag ("3DObject").name.Contains("Dino"))
     {
         int dinoAnimation =  Random.Range(0, dinoAnimations.Length);
         GameObject.FindGameObjectWithTag ("3DObject").GetComponent<Animation> ().Play (dinoAnimations[dinoAnimation]);

     }
 }

2 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

var arr = GameObject.FindGameObjectsWithTag ("3DObject");
foreach (var o in arr) {
   if (o.name.Contains ("Spidey")) {
      // play spideyAnimation
   } else if (o.name.Contains ("Dino")) {
      // play dino animation
   }
 }

答案 1 :(得分:0)

您当前的代码只会找到第一个对象,因为您正在调用GameObject.FindGameObjectWithTag而不是GameObject.FindGameObject s WithTag

UnityDocs - GameObject.FindGameObjectsWithTag