当前位置: 首页 > 知识库问答 >
问题:

将文本更改为变量是什么。团结

宋建柏
2023-03-14

我正在尝试使文本更改为玩家所剩手榴弹的数量。我已经尝试设置手榴弹的数量3然后开始显示手榴弹的数量是什么为文本也是那样。但我有以下错误:

Assets\Scripts\Throwgrenade.cs(20,24):错误CS0029:无法将类型“int”隐式转换为“UnityEngine.GameObject”

而且

Assets\Scripts\Throwgrenade.cs(23,10):错误CS1624:“Throwgrenade.Update()”的主体不能是迭代器块,因为“void”不是迭代器接口类型

这是我的代码:

    public int amountOfGrenades = 3;
    public GameObject grenadesText;
    public GameObject NOgrenadesText;


    void Start()
    {
        
        grenadesText = amountOfGrenades;
    }

    void Update()
    {
        if (Input.GetKeyDown("q") && amountOfGrenades >= 1)
        {
            ThrowingGrenade();
        }

        if(amountOfGrenades == 0)
        {

            yield return new WaitForSeconds(5.0f);
            NOgrenadesText.SetActive(true); // Enable the text so it shows
            yield return new WaitForSeconds(5.0f);
            NOgrenadesText.SetActive(false); // Disable the text so it is hidden
        }
    }

共有1个答案

林玮
2023-03-14

>

  • 第一个错误很容易解释。

    你可能是说

    grenadesText.GetComponent<Text>().text = amountOfGrenades.ToString();
    

    ..或者直接制造

    public Text grenadesText;
    

    或您正在使用的任何文本组件(例如tmp_text)

    然后不能在update方法中使用yield...只能在IEnumerator方法中使用...

    看起来应该有点像

    public int amountOfGrenades = 3;
    // Simply use the correct type right away
    public Text grenadesText;
    public GameObject NOgrenadesText;
    
    private void Start()
    {     
        grenadesText.text =  amountOfGrenades.ToString();
    }
    
    private void Update()
    {
        // Avoid the stringed versions wherever possible
        if (Input.GetKeyDown(KeyCode.Q))
        {
            if(amountOfGrenades > 0)
            {
                // I don't know what happens in here
                // but whenever you are increasing or decreasing the amountOfGranades value
                // you again want to call
                // grenadesText.text =  amountOfGrenades.ToString();
                // in order to update the display
                ThrowingGrenade();
            }
    
            if(amountOfGrenades == 0)
            {
                StopAllCoroutines ();
                StartCoroutine (NoGrenadesRoutine());
            }
        }
    }
    
    private IEnumerator NoGrenadesRoutine ()
    {
        yield return new WaitForSeconds(5.0f);
        NOgrenadesText.SetActive(true); // Enable the text so it shows
        yield return new WaitForSeconds(5.0f);
        NOgrenadesText.SetActive(false); // Disable the text so it is hidden
    }
    

  •  类似资料:
    • 考虑: 为什么改变的值会改变的值?

    • 问题内容: 第一个System.out打印 2 并且应该打印,而第二个System打印 65 。我已经用这种语言编程了一年多了,据我所知这是不可能发生的!有什么帮助吗? 上面的代码在两行上都显示 9 。 问题答案: 当你这样做,之前仅仅是一个参考阵列, NO 新阵列已创建并分配给。因此,当您查看自己的价值时,基本上就是查看的价值,反之亦然。只是的别名。这就是为什么在第二张照片中您得到65。 检查该

    • 我正在迭代Java 7循环和Java 8 循环中的列表。Java 8 循环希望其中的变量不会更改。例如: 有人能解释一下为什么吗?是Java 8的弊端吗?

    • 问题内容: 我读了这个问题不可变对象,并留下了关于不可变对象,并最终场一个问题: 为什么我们需要不可变类中的实例变量为最终变量? 例如,考虑以下不可变的类: 如果在上面的代码中没有set方法,而实例变量仅在构造函数中设置,为什么要求将实例变量声明为final? 问题答案: 有没有 要求 这样做的变量。但是,当您确实明确打算永远不更改变量时,通常这样做是一种好习惯,因为这不仅可以使变量避免错别字或其

    • 说我有这条短信 Lorem ipsum dolor sit amet,是一位杰出的献身者。 我想大胆一点 Lorem ipsum dolor sit amet,是一位杰出的献身者。 如果我用Javascript来做这件事 我似乎不能加粗文本,有什么想法吗?

    • 我在用python修改文本时遇到了问题,尽管我看到很多人在使用它 我的代码: