所以我一直在用c#和unity开发Hololens应用程序,并且遇到了这个问题。
我目前拥有的设置: 实例化的GameObject预制件会自动播放动画。 每秒大约实例化两个游戏对象,最多约有60个停留在场景中,然后再删除。
我正在尝试做的事情: 单击按钮后,停止每个游戏对象上的所有动画。
我尝试使用以下方法在预制件上创建脚本,但没有一个起作用:
public void StopAnimation()
{
anim = gameObject.GetComponent<Animation>();
anim.Stop();
}
//also tried
public void StopAnimation()
{
gameObject.GetComponent<Animation>().Stop();
}
//and have even tried destroying the gameobject
public void StopAnimation(){
Destroy(gameObject);
}
答案 0 :(得分:0)
由于您没有在问题中提及脚本的名称,因此我将其称为StopAnimationScript
实例化预制件时,需要从新创建的实例中获取StopAnimationScript
组件。
var stopAnimationScript = newInstance.GetComponent<StopAnimationScript>();
然后您需要将此引用存储在某个地方,例如List<StopAnimationScript>
myStopAnimationScripts.add(stopAnimationScript);
按下按钮时,您需要在每个实例上致电StopAnimation
foreach(var stopAnimationScript in mytopAnimationScripts)
{
stopAnimationScript.StopAnimation();
}
答案 1 :(得分:0)
好的,所以我实际上只是想通了,现在正将它发布给其他可能需要它的人。因此,基本上,我删除了预制板上的脚本,并转到附加到“停止”按钮的“ StopAnimationButtonScript”,并在按下按钮时插入了以下代码:
public void StopAnimations()
{
foreach (GameObject CloneObject in GameObject.FindGameObjectsWithTag("*insert a custom tag like 'Clone'*"))
{
if (CloneObject.name == "*insert actual game object name here*")
{
CloneObject.GetComponent<Animation>().Stop();
}
}
}
然后转到您的克隆预制件,并在“检查器”面板中的对象名称的正下方为其添加标签“克隆”或您自己的自定义标签。
谢谢大家的帮助!