C# 一次停止多个实例化对象
所以我一直在用c#和unity开发全息透镜应用程序,并且遇到了这个问题 我当前拥有的设置: 一旦实例化,自动播放动画的游戏对象预制。 每秒大约有两个游戏对象被实例化,最多有60个对象在被删除之前留在场景中 我想做的是: 单击按钮,停止每个游戏对象上的所有动画 我曾尝试使用以下方法在预制件上创建脚本,但均无效:C# 一次停止多个实例化对象,c#,visual-studio,unity3d,C#,Visual Studio,Unity3d,所以我一直在用c#和unity开发全息透镜应用程序,并且遇到了这个问题 我当前拥有的设置: 一旦实例化,自动播放动画的游戏对象预制。 每秒大约有两个游戏对象被实例化,最多有60个对象在被删除之前留在场景中 我想做的是: 单击按钮,停止每个游戏对象上的所有动画 我曾尝试使用以下方法在预制件上创建脚本,但均无效: public void StopAnimation() { anim = gameObject.GetComponent<Animation>(); anim.
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);
}
public void StopAnimation()
{
anim=gameObject.GetComponent();
动画停止();
}
//也试过
公共void StopAnimation()
{
gameObject.GetComponent().Stop();
}
//甚至尝试过摧毁游戏对象
公共void StopAnimation(){
摧毁(游戏对象);
}
既然你在问题中没有提到脚本的名称,我就称它为StopAnimationScript
实例化预置时,需要从新创建的实例中获取StopAnimationScript
-组件
var stopAnimationScript = newInstance.GetComponent<StopAnimationScript>();
按下按钮时,需要在每个实例上调用StopAnimation
foreach(var stopAnimationScript in mytopAnimationScripts)
{
stopAnimationScript.StopAnimation();
}
好的,所以我实际上刚刚弄明白了,现在我把它发布给其他可能需要它的人。因此,基本上我删除了预置上的脚本,并转到“StopAnimationButtonScript”,该脚本附在Stop按钮上,并在按下按钮时插入以下代码:
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();
}
}
}
public void StopAnimations()
{
foreach(GameObject.FindGameObjectsSwithTag(“*插入一个自定义标记,如“克隆”*”)中的GameObject CloneObject)
{
如果(CloneObject.name==“*在此处插入实际游戏对象名称*”)
{
CloneObject.GetComponent().Stop();
}
}
}
然后转到克隆预制,并在inspector面板中的对象名称正下方为其指定标记“克隆”或您自己的自定义标记
感谢所有帮助过你的人 如何从按钮中调用StopAnimation?“但没有一个成功”-这是什么意思?他们一直在做动画吗?它们消失了吗?他们一直在实例化吗?虽然这个答案有效,但对我来说似乎不是一个好的实践。最好将此类对象的列表存储在某个位置,并在创建对象时将其添加到此列表中。若要停止动画,请遍历列表并停止它们。对,但如果游戏对象达到某个点,我将销毁它,如果它们都相同,我如何知道或脚本如何知道要删除列表中的哪个实例?如果(__;in list){,您可以这样做。
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();
}
}
}