2016-05-22 69 views
0

我試圖用刪除從世界gameObject和一個列表:團結點擊按鈕

Destroy(obj); 
    itemsInInv.Remove(obj.gameObject); 

但由於某些原因,它的閱讀我list.count0每次我嘗試引用它扔了點擊事件。如果我使用一個鍵並刪除特定的項目,它工作正常。但是,當我嘗試閱讀我的列表中的陣列

實際上是在把它返回0,而不是項目的量的單擊事件就像我可以把'Z',並獲得Debug.Log(itemsInInv.Count)會說15。然後,我將點擊該項目嘗試運行相同的Debug.Log(itemsInInv.Count),並返回0

我試過在統一程序中使用內置的接口。我試着用

items.GetComponent<Button>().onClick.AddListener(() => { useItem(); }); 

裏面居然沒有工作100%的罰款了一小會兒,然後由於某種原因停止工作,不會再工作,無論我做什麼笑。

我已經嘗試使用:

void OnDestroy() 
{ 
    manager.GetComponent<UIManager>().Remove(this.gameObject); 
    Debug.Log("remove" + manager.GetComponent<UIManager>().itemsInInv.Count); 
} 
public void OnPointerClick(PointerEventData eventData) 
{ 
    Destroy(gameObject); 
} 

也試過在做相同的功能,點擊刪除。同樣的問題。 Idk該如何做到這一點呢?即使我創建了一個布爾值並將其設置爲false,然後使用按鈕也可以將其設置爲true,但調試時它不會讀爲true

我幾乎要問的是,如何在屏幕上添加按鈕列表。然後刪除我從屏幕和列表中點擊的SAME按鈕。

+0

你在哪裏調用'items.GetComponent

+0

它。 – Sniffle6

+0

推鍵, 項目=(遊戲對象)實例化(匕首,新的Vector2(0.07514355f,-0.9026657f),新的Quaternion()); 然後它設置並定位其父項,然後添加 items.GetComponent

回答

1

洙這是我做過什麼讓它工作太....

我加入這個劇本到我的項目,多數民衆贊成被點擊

public void OnPointerClick(PointerEventData eventData) 
{ 
    EventSystem.current.SetSelectedGameObject(gameObject); 
    Debug.Log("hey"+ EventSystem.current.currentSelectedGameObject); 
} 

然後在我的其他腳本即時運行

  items.GetComponent<Button>().onClick.AddListener(() => { useItem(); }); 

它運行

public void useItem() 
{ 
    Invoke("itemUsed", 0.25f); 
} 

其中0後運行。25

void itemUsed() 
{ 
    Debug.Log(EventSystem.current.currentSelectedGameObject); 
    deleteItem(EventSystem.current.currentSelectedGameObject); 
    sortItems(); 
} 

我不得不做的調用,因爲它被調用useItem,正在選擇當前選擇的前

而且我的事件系統是我的畫布這使我的遊戲管理器無法訪問它的孩子辦法,我

0

不使用列表。使用字典。

public static Dictionary<string, GameObject> dict = new Dictionary<string, GameObject>(); 

然後你可以使用gameobjects的名字。

foreach(GameObject r in FindObjectsOfType(typeof(GameObject))) 
{ 
     dict.Add(r.name, r); 
} 

然後,你可以做

Destroy(gameObject.name); 
dict.Remove(gameObject.name); 
+0

所以,如果我這樣做,我不能添加mroe比任何具有相同名稱的任何東西,再加上我將如何使用for循環迭代扔它的字典中的gameObjects的定位? – Sniffle6

+0

使用foreach循環或Linq。 foreach(KeyValuePair d in dict){doSomething(); }你仍然可以在字典裏面存儲多個實例,只需要在其中使用一個gameobject數組。 Dictionary xplatinumx15

+0

嗯好吧,所以我做到了。但是,我如何參考我點擊的按鈕。這個腳本不在被銷燬的gameObject上。它在一個單獨的腳本。 這與我的UIManager腳本一起使用useItem()函數。 ()=> {useItem();});().onClick.AddListener(()=> {useItem();}); 所以在我的無效UseItem(){}如何將我引用按鈕i當前點擊 – Sniffle6