簡體   English   中英

一次停止多個實例化的對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM