【问题标题】:Problems with Unity Random Function [closed]Unity随机函数的问题[关闭]
【发布时间】:2021-11-06 14:58:41
【问题描述】:

晚上好,我正在做一个图形冒险,我想用一个 4 位数的代码做一个随机函数,结果我是一个非常新手的程序员,我因为不方便而崩溃了

private void CheckResults()
{
    if (codeSequence = RandomCode.RanCode.ToString())
        {
    SoundManager.PlaySound("nice");
    }

else
{
    SoundManager.PlaySound("wrong");
}   

"RandomCode.RanCode" 是一个 int void,添加 "ToString" 会出现错误提示

“RanCode 是在给定上下文中无效的方法”

这是 RandomCode 无效:

 public void RanCode()
{
    Code = Random.Range(1111, 9999);
}

如果有人有任何想法或解决方案,我将永远感激不尽

【问题讨论】:

  • 什么是int void?您的方法完全返回 void 没有 int。您正在使用=,这是一个可能应该是== 的分配。您正在使用“method.ToString”..您可能想要做的是返回一个int,然后执行RanCode().To string() 以执行该方法并在结果上使用ToString,而不是方法本身... .
  • “我因不便而坠毁”是什么意思?
  • 确保包含您遇到的问题的所有重要信息。例如:您遇到了什么错误?
  • 不要因反对票而气馁。 stackoverflow 对新人来说可能非常苛刻。只需在谷歌上搜索如何发布问题,当您了解到您将获得更少的反对票时。不幸的是,很少有 stackoverflow 反对者会解释他们为什么反对,所以你只需要弄清楚。此外,如果可以,请让您认识的人在发送问题之前对其进行审核

标签: c# string unity3d random void


【解决方案1】:

没有“int void”这样的东西。一个方法要么什么都不返回(void),要么返回一个值(在你的情况下,你似乎期望int)。

//   Returns nothing
//      |
//      v
public void RanCode()
{
    // assigns result of `Range` to `Code` property/field
    Code = Random.Range(1111, 9999);
}

如果你还想返回值,你需要像这样重写你的方法:

public int RanCode()
{
    Code = Random.Range(1111, 9999);
    return Code;
}

您确实有另一个问题:

RandomCode.RanCode.ToString()

调用方法需要(),所以应该是这样的:

RandomCode.RanCode().ToString()

此外,对于相等性检查,您需要 == 而不是 =(这是分配)。

我确实想知道您为什么要在这里为Code 赋值。如果我们使用您现有的代码(上面没有我的修复),我猜您可能打算这样做?:

private void CheckResults()
{
    RandomCode.RanCode();   
    if (codeSequence == RandomCode.Code.ToString())
    {
        SoundManager.PlaySound("nice");
    }
    else
    {
        SoundManager.PlaySound("wrong");
    }   
}

【讨论】:

  • 您可能更愿意将== 用于您的if 条件而不是赋值;) 并将关闭方法的} 移动到else 块之后`^^跨度>
  • @derHugo Doh。我数错了他们的}s 并没有发现=。谢谢! :)
  • @Kit 不客气 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-08
  • 2018-10-29
  • 1970-01-01
  • 2015-02-10
  • 1970-01-01
  • 1970-01-01
  • 2020-10-16
相关资源
最近更新 更多