生成带有颜色的随机按钮

Posted

技术标签:

【中文标题】生成带有颜色的随机按钮【英文标题】:Generating random button with colors 【发布时间】:2021-12-11 07:25:42 【问题描述】:

我和我的朋友正在做一个 VR 实验。我们目前有生成 16 个随机颜色按钮的代码,我想要一些代码来重置按钮并再次随机化颜色大约 20 次。我不确定如何处理这种情况。这是我们目前拥有的代码。

    public class ButtonManager : MonoBehaviour

    Text[] labels;
    Image[] images;
    // Start is called before the first frame update
    Color[] colors = new Color[]
        Color.red,Color.green,Color.yellow,Color.magenta,Color.gray,Color.black
    ;
    void Start()
    
        int chosenOne = Random.Range(0, 16);
        Debug.Log(chosenOne.ToString());
        labels = gameObject.GetComponentsInChildren<Text>();
        int elemNum = 0;
        foreach (Text txt in labels)
        
            txt.text = elemNum.ToString();
            elemNum++;
        
        images = gameObject.GetComponentsInChildren<Image>();
        elemNum = 0;
        foreach (Image btn in images)
        
            if (elemNum == chosenOne + 1)
            
                btn.color = Color.blue;
            
            else
            
                btn.color = colors[Random.Range(0, 6)];
            
            elemNum++;
        
    

    // Update is called once per frame
    void Update()
    
        
    

【问题讨论】:

我建议你把按钮的创建逻辑和颜色设置逻辑分成两个不同的方法,这样你就可以从Start()调用CreateButtons()方法只创建一次按钮,也可以立即调用@987654324 @ 来自Start(),然后您可以随时再次调用SetColors(),并重复使用按钮,而不是每次都破坏它们并重新创建它们。 【参考方案1】:

试试这个:

  public class ButtonManager : MonoBehaviour
  
    Text[] labels;
    Image[] images;
    // Start is called before the first frame update
    Color[] colors = new Color[]
    Color.red,Color.green,Color.yellow,Color.magenta,Color.gray,Color.black
    ;
    void Start()
    
    labels = gameObject.GetComponentsInChildren<Text>();
    foreach (Text txt in labels)
    
        txt.text = elemNum.ToString();
        elemNum++;
    
    images = gameObject.GetComponentsInChildren<Image>();
    foreach (Image btn in images)
    
       btn.color = colors[Random.Range(0, colors.Length)];
    
   

   // Update is called once per frame
   void Update()
   
    
   

【讨论】:

以上是关于生成带有颜色的随机按钮的主要内容,如果未能解决你的问题,请参考以下文章

使用事件侦听器(Javascript、jQuery)将 BG 颜色更改为随机颜色?

js随机生成验证码及其颜色

在指定时间随机改变不同按钮的颜色

将shp文件转换为mapgis文件后为啥会带有颜色

如何生成特定颜色的随机阴影列表? (例如橙色的随机阴影)

如何在单击时将 HTML 中按钮的文本颜色更改为随机颜色?