如何在销毁前一个对象的同一位置实例化游戏对象

时间:2018-11-28 09:23:09

标签: c# visual-studio unity3d

我有多个空的游戏对象作为生成游戏对象的生成点,并且我希望破坏生成的游戏对象,如果要测试的条件为true,则希望在相同的生成点上实例化一个新对象。

我有2个单独的脚本,一个附加在生成点对象上,另一个用于其中具有条件的游戏管理员。

游戏管理器脚本上的条件:

public void checkword()
 {
     wordBuilded = displayer.text.ToString();

     LetterTiles[] tiles = FindObjectsOfType<LetterTiles>();

     foreach (LetterTiles item in tiles)
     {

         if (txtContents.Contains(wordBuilded))
         {
             if (item.gameObject.CompareTag("clicked"))
             {
                 Destroy(item.gameObject);
                 FindObjectOfType<letterSpawner>().refresh();
             }                                                     
         }

         else
         {
             if (item.gameObject.CompareTag("clicked"))
                 item.GetComponent<Button>().interactable = true;
         }

     }
 }

附加到生成点对象的脚本,用于实例化对象

using UnityEngine;

public class letterSpawner : MonoBehaviour {

     public GameObject[] letterTiles;
     GameObject tiles;
     Vector3 scale = new Vector3(0.8f, 0.8f, 0);

     void Start () {
         refresh();
     }

     public void refresh()
     {
         int rand = Random.Range(0, letterTiles.Length);
         tiles = Instantiate(letterTiles[rand], transform.position, Quaternion.identity);
         tiles.transform.SetParent(gameObject.transform);
         tiles.transform.localScale = scale;

     }
 }

1 个答案:

答案 0 :(得分:0)

您可以通过对现有内容进行一些小的更改来实现此目的,首先将刷新功能更改为此功能

public static String Eliminate(String input)                                      
{                                     
char[] chrArray = input.toCharArray();                                      
String letter ="";                                      

for (char value:chrArray){                                      
  if (letter.indexOf(value.toLowerCase()) == -1 && letter.indexOf(value.toUpperCase()) == -1){                                     
    letter += value;                                        
  }                                     
}                                       
return letter;                                      
} 

还在同一文件中添加另一个默认文件,该文件使用您拥有的默认值调用该文件

public void refresh(Vector3 position)
 {
     int rand = Random.Range(0, letterTiles.Length);
     tiles = Instantiate(letterTiles[rand], position, Quaternion.identity);
     tiles.transform.SetParent(gameObject.transform);
     tiles.transform.localScale = scale;

 }

,然后在您的public void refresh() { refresh(transform.position); } 函数中

checkword

应该为您做