【问题标题】:How to use the same script on multiple game objects in unity?如何统一在多个游戏对象上使用相同的脚本?
【发布时间】:2016-02-25 03:55:44
【问题描述】:

我有一个脚本CoinFill,它会生成一个径向进度条。

当 FillAmount = 1 时,我想将该特定图像重置为零。我希望能够将它用于多个GameObjects。问题是当第一个FillAmount=1时,速度快的penny,你可以点击nickle,它可能是50%的填充,然后penny会重置为0。但是如果nickle是1它不会自行重置,只有一分钱会休息。

我正在尝试做的事情的图片:

代码:

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 或设置一些父母的事情

【问题讨论】:

    标签: unity3d


    【解决方案1】:

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

    1) 所以确实在场景中创建三个便士.. 即,制作三个新游戏对象并添加图形或其他任何东西。确保在每个游戏对象上正确设置名称

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

    3) 查看脚本上的检查器变量槽实际上是在 A 上。

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

    即,完全可以将项目“拖到自身”。换句话说,您在脚本中的变量将简单地引用“那个项目本身,A”

    5) 现在忘记 A。只看 B

    6) 将脚本拖到 B 上。再次将 B 拖到“自身”上以填充槽

    7) 现在 C. 将脚本拖到 C. 上。再次将 C 拖到“自身”上以填充插槽

    在脚本的顶部(在 Awake 中)或任何添加此内容

    Debug.Log("这个特定的脚本在 " +gameObject.name);

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

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

    【讨论】:

    • 感谢乔,我最初以为我可以这样做感谢您的所有帮助!
    • 如果它只是一个字符串变量会发生什么?没有拖拽
    • 嗨 Rifat。不知道你的意思。试试public string x 看看会发生什么。您可以在编辑器中的插槽中的检查器中输入一个字符串。祝你好运
    【解决方案2】:

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

    someobject.gameObject.AddComponent<CoinFill>();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多