如何在单击按钮时实例化数组中的下一个预制件?

时间:2019-08-02 13:29:21

标签: c# unity3d game-development

我想在数组中实例化新的预制件,并在用户单击下一个按钮或上一个按钮时删除旧的预制件。

我的游戏对象预制阵列是这样的:

public GameObject[] prefabMoles = new GameObject[3];
 GameObject[] moles = new GameObject[3];
 
 void Start () {
 
     for(int i = 0; i < prefabMoles.Length; i++)
     {
         moles[i] = (GameObject) GameObject.Instantiate(prefabMoles[i], new Vector3((i-1)*5, 0, 0), Quaternion.identity);
     }
 
 }

所以现在我想在画布上添加一个按钮,它将是下一个字符,而上一个将返回数组中的一个数字。

例如: 我有Moles数组,并且实例化了moles [2]; 在单击下一个按钮时,我想销毁痣[2]并实例化痣[3]。

当我们在痣上[3]并单击上一步时,必须销毁痣[3]并实例化痣[2]。

产生新的效果会很棒,但是没关系。 然后,当实例化新的按钮时,必须弹出按钮以进行解锁或选择是否解锁字符。

如果可以的话,非常感谢社区的帮助。

1 个答案:

答案 0 :(得分:1)

如果您要使按钮创建一个新按钮并销毁旧按钮,则可以执行此功能,可以将其添加到按钮操作中。

它看起来像:

int currentIndex = 0;
GameObject currentObject;

void Start()
{
     //Instantiate initial object
    currentObject = Instantiate(Moles[currentIndex]);
}

public void Previous()
{
    Destroy(currentObject);
    currentIndex --;
    currentIndex = currentIndex < 0 ? Moles.Length : currentIndex;
    currentObject = Instantiate(Moles[currentIndex]);
    SpawnEffects();
}    

public void Next()
{
    Destroy(currentObject);
    currentIndex ++;
    currentIndex = currentIndex > Moles.Length ? 0 : currentIndex;
    currentObject = Instantiate(Moles[currentIndex]);
    SpawnEffects();
}

void SpawnEffects()
{
    //put your desired Effects
}

基本上,您要跟踪已创建的内容以及要制作的下一个项目。