【问题标题】:How do i make Onclick of a button based on its Text?如何根据其文本制作按钮的 Onclick?
【发布时间】:2020-04-19 01:40:40
【问题描述】:

我需要的过程就像我有一个按钮数组,我需要为每个按钮创建相同的单击功能,该功能获取单击按钮的文本并将其解析为 int 并执行场景管理。这是函数的简短故事

Onclick -> 按钮数组 -> 查找被点击的按钮 -> 获取组件子文本 -> 解析为 int -> int = variable ->

SceneManager.LoadScene.(SceneManager.GetActiveScene.BuildIndex + variable)

干杯!

【问题讨论】:

  • 您可能需要阅读How to Ask。我不明白你在问什么。你能把代码充实一点吗?
  • 在单击方法时设置按钮 -> 方法具有所有按钮的数组 -> 获取触发该方法的按钮 -> 获取子按钮的组件 (TEXT) -> 将 UI.Text 解析为int -> 将 int 设置为变量希望您能理解。对不起,我 14 岁,来自非英语国家,英语不好
  • 我很感激英语不是你的第一语言。我没有得到的部分是set int to an variable。您能否编辑您的问题并显示您可以编写的所有代码,并为您无法编写的代码编写伪代码?
  • 如果 1 是整数 Variable = 1,则应该将得到的整数设置为变量 LIKE,谢谢
  • 您能否编辑您的问题并显示您可以编写的所有代码,并为您无法编写的代码编写伪代码?

标签: c# arrays unity3d


【解决方案1】:

这是您的解决方案。

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class MyClass: MonoBehaviour
{
   public Button[] buttons;

   void OnEnable()
   {
      for (int i = 0; i < buttons.Length; i++)
      {
         buttons[i].onClick.AddListener(delegate { LoadScene(i); });
      }
   }

   private void LoadScene(int i)
   {
      string text = buttons[i].transform.GetChild(0).GetComponent<Text>().text;
      int number = int.Parse(text);

      SceneManager.LoadScene(SceneManager.GetActiveScene.BuildIndex + number);
   }
}

【讨论】:

  • 谢谢,但我得到一个索引超出范围异常索引超出了以下代码行中的数组错误字符串文本 = 按钮 [i].transform.GetChild(0)。 GetComponent().text; `谢谢! @federico-dondi
  • 确保每个按钮都有一个带有 Text 组件的子按钮。另外,请记住填充 buttons 数组。
  • 也许使用GetComponentInChildren&lt;Text&gt;而不是GetChild(0)会更好
  • 这是一个肯定的选择,它也使代码更具可读性。
  • 它没有用。我正在更改为手动场景管理。谢谢!
猜你喜欢
  • 2021-01-20
  • 2011-04-27
  • 1970-01-01
  • 2020-07-08
  • 2014-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多