Странное поведение при попытке назначить теги игровым объектам UI - PullRequest
0 голосов
/ 25 июня 2019

Когда я вызываю функции LikeFrame1 (), LikeFrame2 (), LikeFrame3 () один раз (т. Е. Нажимаю кнопку, вызывающую функцию в первый раз), случайному тегу присваивается созданный игровой объект (тег приходитиз других функций, где я делаю то же самое, LikeFrame1 (), LikeFrame2 (), LikeFrame3 () соответственно) Когда я нажимаю кнопку, чтобы вызвать ее второй раз, она назначит правильный тег.

IЯ пытался изменить место, где я вызываю назначение нового тега в функции

Вот скрипт с моими функциями, который создает экземпляр Gameobject и назначает теги:

    public class InventoryCreateButton : MonoBehaviour
  {
    public Button Button;

    public void AddItemz1()
    {

        Button go = Instantiate(Button, new Vector3(0, 0, 0), 
        Quaternion.identity) as Button;
        Button.tag = "poop";
        go.transform.parent = 
        GameObject.Find("ButtonListContent1").transform;
        Debug.Log("AddItemz1");

     }

    public void AddItemz2()
    {
        Button go = Instantiate(Button, new Vector3(0, 0, 0), 
        Quaternion.identity) as Button;
        Button.tag = "poop2";
        go.transform.parent = 
         GameObject.Find("ButtonListContent1").transform;
            Debug.Log("AddItemz2");

    }

Я вызываю их из этого скриптавот так:

    public class ChooseFrame : MonoBehaviour
    {

    public GameObject currentInterObj = null;

    public InteractionObject currentInterObjScript = null;

    public Inventory inventory;

    public InventoryCreateButton inventorycreateButton;

    public InventoryButtonGetImage inventoryButtonGetImage;

    public void LikeFrame1()
    {
        currentInterObj = frame1;
        if (currentInterObj && _soundOn1)
        {
            inventorycreateButton.AddItemz1();
            _soundOn1 = false;
            Debug.Log(_soundOn1);

        }
        else
        {
            SoundOn1(); //method that can turn the sound on
            _soundOn1 = true;
            Debug.Log(_soundOn1);
        }
    }

    // Update is called once per frame
    void SoundOn1()
    {

        Destroy(GameObject.FindWithTag("poop"));

    }

   public void LikeFrame2()
    {
        currentInterObj = frame2;
        if (currentInterObj && _soundOn2)
        {
            inventorycreateButton.AddItemz2();
            _soundOn2 = false;
            Debug.Log(_soundOn2);

        }
        else
        {
            SoundOn2(); //method that can turn the sound on
            _soundOn2 = true;
            Debug.Log(_soundOn2);
        }
     }

    // Update is called once per frame
    void SoundOn2()
    {

        Destroy(GameObject.FindWithTag("poop2"));

    }


    public void LikeFrame3()
    {
        currentInterObj = frame3;
        if (currentInterObj && _soundOn3)
        {
            inventorycreateButton.AddItemz3();
            _soundOn3 = false;
        }
        else
        {
            SoundOn3(); //method that can turn the sound on
            _soundOn3 = true;
        }
    }

    // Update is called once per frame
    void SoundOn3()
    {
        Destroy(GameObject.FindWithTag("poop3"));
    }

Нет сообщения об ошибке, и я ожидаю, что правильный тег будет назначен моему экземпляру игрового объекта при вызове функции в первый раз, а не во второй раз.

...