C# 随机。不能使用实例引用访问范围(float,float);改为使用类型名称限定它
每当我试图在两个参数之间生成一个随机数时,它都会给我一个错误: Random.Rangefloat,无法使用实例引用访问float;改为使用类型名称限定它 我是Unity的新手,所以任何帮助都将不胜感激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;
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上,将帮助您的答案标记为已接受。