私は団結してゲームを書いています、そして私は1つのランダムな整数を作りたいです...私は以下を使用しています:
public Random ran = new Random();
public int power = ran.Next(0, 10);
しかし、プログラムを実行したい場合、次のエラーが発生します。
タイプ「UnityEngine.Random」には「Next」の定義が含まれておらず、タイプ「UnityEngine.Random」の拡張メソッド「Next」が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)
誰かが何がうまくいかないのか私を助けてくれますか?
このクラスには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);
}
}
代わりにこれを試してください:
var number = Random.Range(0,10);
UnityにはRandomクラスが組み込まれています。代わりに、次のものを使用できます。
var randomNumber = Random.Range(10);