如何在统一的多个游戏对象上使用相同的脚本?

时间:2016-02-24 01:30:13

标签: unity3d

我有一个脚本CoinFill,它创建了一个径向进度条。

当FillAmount = 1时,我想将该特定图像重置为零。我希望能够将它用于多个GameObject。问题是,当第一个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;
        }
    }
}

我不确定我是否需要与Penny或Nickle的父母做某事,或者我是否应该使用this或设置一些父母的东西

2 个答案:

答案 0 :(得分:2)

假设你有三种不同的便士,A B和C

1)所以确实在场景中创建了三个便士..即,使三个新的游戏对象并添加图形或其他。一定要在每个游戏对象上正确设置名称

2)查看A. 将脚本拖到A上。

3)查看SCRIPT上的检查员变量槽实际上是A.

4)将A从层次结构拖到A上的那个检查器变量槽,A

即完全可以将项目&#34;拖到自身&#34; 。换句话说,脚本中的变量将简单地引用&#34;该项本身,A&#34;

5)现在忘了A. 只看B

6)再次将脚本拖到B.然后将B&#34;拖到自身&#34;填补空缺

7)现在C.再次将脚本拖到C.上,将C&#34;拖到自身&#34;填补空缺

位于脚本顶部(在Awake中)或添加此

Debug.Log(&#34;此特定脚本打开&#34; + gameObject.name);

运行。注意你看到其中的三个。

您现在有三个带有INDEPENDENT脚本的INDEPENDENT对象!享受

答案 1 :(得分:0)

Joe的答案很好,但想添加另一个选项来回答这个名词问题:由于你的类来自Monobehavior,你可以在运行时使用以下代码行将你的脚本添加到任何游戏对象。

M