web-dev-qa-db-ja.com

「「UnityEngine.Random」に「次へ」の定義が含まれていません...」エラーを解決するにはどうすればよいですか?

私は団結してゲームを書いています、そして私は1つのランダムな整数を作りたいです...私は以下を使用しています:

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

しかし、プログラムを実行したい場合、次のエラーが発生します。

タイプ「UnityEngine.Random」には「Next」の定義が含まれておらず、タイプ「UnityEngine.Random」の拡張メソッド「Next」が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)

誰かが何がうまくいかないのか私を助けてくれますか?

11

このクラスにはNextというメソッドがあるため、System.Randomクラスを使用する必要があります。これに関する詳細なドキュメントについては、 ここ をご覧ください。これはあなたのエラーだと思います。表示されるエラーメッセージから、UnityEngine.RandomではなくSystem.Randomクラスが使用されていることが明らかだからです。コードに関しては、私はこれを試してみます:

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

更新

System.Randomを使用して、名前の衝突の問題を解決しますが、別の問題が発生します。以下のように、クラスの本体内に上記の2行を入力します。

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

コンパイラが何か問題が発生していることを警告し、プロジェクトをビルドしようとすると、次のメッセージが表示されます。

フィールド初期化子は、非静的フィールド、メソッド、またはプロパティを参照できません

これを修正するには、2つのオプションがあります。

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);
    }
}
17
Christos

代わりにこれを試してください:

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

UnityにはRandomクラスが組み込まれています。代わりに、次のものを使用できます。

    var randomNumber = Random.Range(10);
0
Chaz Jarman