如何解决“'UnityEngine.Random'不包含'Next'的定义......”错误?

问题描述 投票:9回答:3

我正在写一个统一的游戏,我想创建一个随机整数...我使用以下内容:

public Random ran = new Random();
public int power = ran.Next(0, 10);

但是当我想运行程序时它会给我以下错误:

类型'UnityEngine.Random'不包含'Next'的定义,并且找不到类型为`UnityEngine.Random'的扩展方法'Next'(您是否缺少using指令或程序集引用?)

有什么人帮我解决了什么问题???

c# random unity3d
3个回答
15
投票

你应该使用System.Random类,因为这个类有一个名为Next的方法。有关此问题的进一步文档,请查看here。我想这是你的错误,因为从你得到的错误信息中,很明显使用了UnityEngine.Random类而不是System.Random。在代码方面,我会尝试这样做:

public System.Random ran = new System.Random();
public int power = ran.Next(0, 10);

更新

使用System.Random我们将解决命名冲突的问题,但会出现另一个问题。在类的主体内键入以上两行,如下所示:

public class Program
{
    public System.Random ran = new System.Random();
    public int power = ran.Next(0, 10);
}

您会注意到编译器警告您发生了错误,如果您尝试构建项目,您将收到以下消息:

字段初始值设定项不能引用非静态字段,方法或属性

为了解决这个问题,有两种选择:

a)使ran静止:

public class Program
{
    public static System.Random ran = new System.Random();
    public int power = ran.Next(0, 10);
}

b)在构造函数中移动power的初始化:

public class Program
{
    public System.Random ran = new System.Random();
    public int power;

    public Program()
    {
       power = ran.Next(0, 10);
    }
}

1
投票

试试这个:

var number = Random.Range(0,10);

0
投票

Unity有一个内置的Random类。相反,你可以使用:

    var randomNumber = Random.Range(10);
© www.soinside.com 2019 - 2024. All rights reserved.