[英]stopping multiple instantiated objects at once
所以我一直在用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);
}
由於您沒有在問題中提及腳本的名稱,因此我將其稱為StopAnimationScript
實例化預制件時,需要從新創建的實例中獲取StopAnimationScript
。
var stopAnimationScript = newInstance.GetComponent<StopAnimationScript>();
那么您需要將此引用存儲在某個地方,例如List<StopAnimationScript>
myStopAnimationScripts.add(stopAnimationScript);
當您按下按鈕時,需要在每個實例上調用StopAnimation
foreach(var stopAnimationScript in mytopAnimationScripts)
{
stopAnimationScript.StopAnimation();
}
好的,所以我實際上只是想通了,現在將它發布給其他可能需要它的人。 因此,基本上我刪除了預制板上的腳本,並轉到附加到“停止”按鈕的“ 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();
}
}
}
然后轉到克隆預制件,並在檢查器面板中對象名稱的正下方為其添加標簽“克隆”或您自己的自定義標簽。
謝謝大家的幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.