Unity按钮单击

时间:2017-12-10 10:01:49

标签: c# unity3d button

嗨所以我在预制件中有4个按钮我有一个加号按钮 - 我已经设置了按钮,这样当你点击+按钮时它应该编辑其他2个按钮中的文字说卖10和购买10,当你再次点击+时,它会说买20和卖20等。

这些按钮是通过在主预制件中添加c#脚本并使用+和 - 按钮的on_click功能设置的。我遇到的问题是更改其他2个按钮的文本的最佳方法是什么。由于这个预制件将动态创建,以便在商店页面中生成100-200x项目,我想在附加到预制件的脚本中创建2个游戏对象并将两个按钮拖动到它们但我确信必须有更好的方法来添加按钮的文本组件。

非常感谢任何帮助。

我已经提供了一些图片来澄清:

enter image description here enter image description here

我正在寻找的是最佳做法,这样当点击+或 - 时,它会将买入和卖出按钮更新为10到100,反之亦然。这是一个预制件,将被克隆200-300次,以寻找最佳性能的方法。

2 个答案:

答案 0 :(得分:0)

以下是我通常如何以简洁的方式将UI映射到变量。如果您有任何问题,请与我们联系,如果您希望根据您的解决方案进一步量身定制,那么您必须向我展示一些代码以及今天的工作原理。这是我通常使用的通用概念:

public class YourClass : MonoBehaviour 
{
    private Text sellButtonText;

    private int _sellAmount;
    public int SellAmount
    {
      get
      {
        return _sellAmount;
      }
      set 
      {
        _sellAmount = value;
        _sellButtonText = "Sell " + _sellAmount;
      }
    }


    void Start() 
    {
      _sellButtonText = GameObject.Find("The Object with Sell button").GetComponent<Text>();
    }
}

您将变量SellAmount公开给public,任何更改该变量的人也将使用自定义getter和setter更改UI中显示的内容。

如果您不熟悉这种架构,以及我们为什么还需要私有_sellAmount,那么就要避免无限循环。 get和set-methods需要将它们的数据存储在另一个变量中,因为如果get-method返回相同的变量,它将再次输入相同的get-method ......再次......再次。与set相同,它设置相同的变量,该变量进入相同的set-method,该set-method设置相同的变量,该变量进入相同的set-method。要解决此问题,请将其存储在另一个私有成员中。

答案 1 :(得分:0)

我找到了解决方案,我忘了使用unityengine.ui添加,然后我可以创建一个公共文本并将按钮的文本拖到它上面。