C# 随机。不能使用实例引用访问范围(float,float);改为使用类型名称限定它

C# 随机。不能使用实例引用访问范围(float,float);改为使用类型名称限定它,c#,unity3d,C#,Unity3d,每当我试图在两个参数之间生成一个随机数时,它都会给我一个错误: Random.Rangefloat,无法使用实例引用访问float;改为使用类型名称限定它 我是Unity的新手,所以任何帮助都将不胜感激 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Spawner : MonoBehaviour { public GameObject enemy;

每当我试图在两个参数之间生成一个随机数时,它都会给我一个错误:

Random.Rangefloat,无法使用实例引用访问float;改为使用类型名称限定它

我是Unity的新手,所以任何帮助都将不胜感激

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Spawner : MonoBehaviour
{
    public GameObject enemy;
    float randx;
    float randy;
    Vector2 whereToSpawn;
    public float spawnRate = 2f;
    float nextSpawn = 0f;
    Random random = new Random();
    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        if(Time.time > nextSpawn)
        {
            nextSpawn = Time.time + spawnRate;
            randx = random.Range(-1.408f, 1.232f);
            randy = random.Range(0.776f, 1.232f);
            whereToSpawn = new Vector2 (randx, randy);
            Instantiate(enemy, whereToSpawn, Quaternion.identity);
        }
    }
}

Range是一个静态函数,因此您不必在Random的实例上调用它,而必须在类型名上调用它。所以就像你现在做的那样,但是丢失了新的Random内容,只说Random.Range….

Random.Range是一个静态函数,所以你不需要在Random的实例上调用它,而需要在类型名上调用它。所以就像你现在做的那样,但是丢失了新的Random内容,只说Random.Range….

Range不是一个实例方法,它必须通过它的类型来访问。替换此项:

randx = random.Range(-1.408f, 1.232f);
randy = random.Range(0.776f, 1.232f);
为此:

randx = Random.Range(-1.408f, 1.232f);
randy = Random.Range(0.776f, 1.232f);
Range不是实例方法,必须通过其类型访问它。替换此项:

randx = random.Range(-1.408f, 1.232f);
randy = random.Range(0.776f, 1.232f);
为此:

randx = Random.Range(-1.408f, 1.232f);
randy = Random.Range(0.776f, 1.232f);

NET上的大多数函数都是随机实例函数。您需要一个实例来处理它们。长期的建议是尽可能长时间地重复使用实例,创建多个实例将恶化随机性,并且可以一直使用相同的值

没有RangeFloat、Float函数。事实上,我找不到一个静态方法。所以你要么使用Mono的Random,第三方Random,要么有一些解释方法


在这两种情况下,编译器都找到了标记为静态的范围函数。静态函数必须在类型本身上调用,而不是在实例上调用。类似于运行Float.TryParse的方式。或者,静态属性Time.Time的值类似于DateTime.Now。

在.NET上,大多数函数都是实例函数。您需要一个实例来处理它们。长期的建议是尽可能长时间地重复使用实例,创建多个实例将恶化随机性,并且可以一直使用相同的值

没有RangeFloat、Float函数。事实上,我找不到一个静态方法。所以你要么使用Mono的Random,第三方Random,要么有一些解释方法


在这两种情况下,编译器都找到了标记为静态的范围函数。静态函数必须在类型本身上调用,而不是在实例上调用。类似于运行Float.TryParse的方式。或者是静态属性Time.Time,它的值类似于DateTime.Now。

感谢您的快速响应,这非常有帮助,它现在可以工作了perfectly@rhys您可以通过单击他们答案左上角的绿色复选标记来感谢他们。感谢您的快速响应,这非常有帮助,现在它可以正常工作了perfectly@rhys你感谢别人单击他们答案左上角的绿色复选标记。感谢您如此快速的响应,这非常有帮助,而且很有效perfectly@rhys在StackOverflow上表示感谢的最佳方式是将帮助您的答案标记为已接受。感谢您如此快速的响应,这非常有帮助,而且很有效perfectly@rhys说谢谢的最好方式在StackOverflow上,将帮助您的答案标记为已接受。