2016-02-24 121 views
0

我有一個腳本CoinFill這使得徑向進度條。如何在統一的多個遊戲對象上使用相同的腳本?

當FillAmount = 1時,我想將該特定圖像重置爲零。我希望能夠將這個用於多個GameObject s。問題是,當第一個FillAmount = 1,速度更快的一分錢,你可以點擊鎳,可能是在50%填充,然後便士將重置爲0.但是,如果鎳是在1它會不重置自己,只有一分錢會休息。

的什麼,我試圖做圖片: enter image description here

代碼:

using UnityEngine; 
using System.Collections; 
using UnityEngine.UI; 

public class CoinFill : MonoBehaviour { 

    public SavingsAccountManager sam; 

    public float fillCoinSpeed; 
    public Image coinFill; 
    public float maxCoinFill = 100f; 
    public float minCoinFill = 0f; 
    public float currentCoinFill; 


    // Use this for initialization 
    void Start() 
    { 
     currentCoinFill = minCoinFill; 
    } 


    void Update() 
    { 
     if (currentCoinFill < maxCoinFill) 
     { 
      currentCoinFill += fillCoinSpeed * Time.deltaTime; 
     } 

     coinFill.fillAmount = currentCoinFill/maxCoinFill; 
    } 
//Penny Button 
    public void PennyPush() 
    { 
     if (coinFill.fillAmount == 1) 
     { 
      sam.savingsAccountAmount += .01f; 
      sam.savingsAccountText.text = sam.savingsAccountAmount.ToString("f2"); 
      currentCoinFill = minCoinFill; 
     } 

    } 

//Nickle Button 
    public void NicklePush() 
    { 
     if (coinFill.fillAmount == 1) 
     { 
      sam.savingsAccountAmount += .05f; 
      sam.savingsAccountText.text = sam.savingsAccountAmount.ToString("f2"); 
      currentCoinFill = minCoinFill; 
     } 
    } 
} 

我不知道我是否需要做一些與便士或鎳的父母,或者我應該是使用this或設置一些家長的事

回答

2

假設你有三個不同的便士,AB和C

1)所以確實在場景中創建三個便士..也就是說,讓三個新的遊戲對象並添加圖形或其他。一定要正確設置名稱爲每個遊戲對象

2)看A.在拖動你的腳本到A.

3)看檢查變量插槽上的腳本實際上是在A.

4)從層次結構拖動A對那些督察變量位,上一個

即,這是完全確定「到自己」拖動項目。換句話說,你的腳本變量將僅僅是指「該項目本身就是一個」

5)現在忘記A. 只看B處

6)再次拖動腳本上B.,拖動B「上,以本身」來填充槽

7)現在C.拖動腳本上C.再次,拖動C「上以本身」來填充槽

在腳本的頂部(在Awake)或其他加這個

Debug.Log(「這個特定的腳本在」+ gameObject.name);

運行。注意你會看到其中三個。

您現在擁有三個帶有獨立腳本的獨立對象!享受

+0

感謝喬,我最初以爲我可以做這種方式感謝您的幫忙! –

+0

如果它只是一個字符串變量會發生什麼?不拖拉 –

+0

嗨Rifat。不知道你的意思。只需嘗試'公共字符串x',看看會發生什麼。您可以**在編輯器中的插槽中的檢查器中鍵入**字符串。祝你好運 – Fattie

0

喬的回答是好,但想添加另一種選擇回答名義的問題:由於類從Monobehavior派生,您可以將您的腳本添加到在運行時用下面的代碼行任何遊戲對象。

someobject.gameObject.AddComponent<CoinFill>(); 
相關問題