2017-05-04 38 views
0

好吧,所以我有一個變量稱爲信息,這是我自己的類名爲Kingdom Perk。它包含有關每個不同升級的信息,您可以將其添加到您的王國,並通過設置功能將其傳遞給腳本,並在該功能中將公共變量「信息」分配給傳入的內容。統一(C#) - 公共變量將不能在一個特定的功能

在更新函數,如果我寫:

Debug.Log("Perk Name: " + info.Name); 

它告訴我「大炮」或「牆」等

但是,如果我嘗試訪問它時,按下按鈕時運行的函數,它告訴我, 「信息」爲空。

設置功能總是在按鈕按下功能之前運行,並且相同的全局變量在更新功能中工作,因爲它總是告訴我正確的事情,它只在這個功能中被破壞。

讚賞任何幫助,詢問你是否需要更詳細

感謝

編輯:不同的全局變量也顯示了該功能。爲空。

編輯2:

private KingdomPerk info; 

public void Setup(KingdomPerk data) 
{ 
    info = data; 
    perkName.text = data.Name; 
    perkType.text = "Type: " + data.Type.ToString(); 
    perkHealth.text = "Health: " + data.Health.ToString() + "HP"; 
    perkUpgradeCost.text = "Upgrade Cost: " + data.UpgradeCost.ToString(); 
    perkImage.sprite = data.Sprite; 
} 

public void UpgradeButtonPressed() 
{ 
    float money = FindObjectOfType<MapGenerator>().worldInfo.money; 

    if (money >= info.UpgradeCost && info.Level != info.MaxUpgradeLevel) 
    { 
     Debug.Log("We've got enough!"); 
     money -= info.UpgradeCost; 
     info.DamagePerShot *= info.DamageMultiplier; 
     info.Health *= info.HealthMultiplier; 
     info.Level++; 
     info.UpgradeCost *= info.CostMultiplier; 
     info.FireRate *= info.FireRateMultiplier; 
     RefreshInfo(); 
    } 
    else if (money < info.UpgradeCost) 
     Debug.Log("Get more money!"); 
    else if (info.Level == info.MaxUpgradeLevel) 
     Debug.Log("Already max level!"); 
} 

設置在這裏叫,在不同的腳本:

void RefreshListItems() 
{ 
    ClearListItems(); 

    for (var i = 0; i < perks.Count; i++) 
    { 
     if (perks[i].UnlockLevel <= FindObjectOfType<MapGenerator>().worldInfo.playerLevel) 
     { 
      GameObject perkObject = Instantiate(itemPrefab); 
      perkObject.transform.SetParent(scrollViewTransform); 
      PerkListItem perkItem = perkObject.GetComponent<PerkListItem>(); 
      perkItem.Setup(perks[i]); 
      upgradeGOList.Add(perkObject); 
     } 
    } 
} 
+0

可以請你展示更多的代碼嗎? IE瀏覽器。在什麼地方'info'被初始化,它在哪裏被使用,它在哪裏被聲明?目前沒有足夠的背景來確定根本原因。 – Serlite

+0

確定已更新它,如果還有其他內容讓我知道 –

+0

您必須調用您的'Setup(KingdomPerk data)'函數並傳入'KingdomPerk'的新實例以初始化'info'。 – Programmer

回答

0

固定 - onclick事件是在預製引用腳本,而不是該實例化的副本。