Unity3d 如何使用“生成一个数字”;“随机范围”;换个环境?
我有这个剧本:Unity3d 如何使用“生成一个数字”;“随机范围”;换个环境?,unity3d,random,numbers,Unity3d,Random,Numbers,我有这个剧本: public class EmpezarJuego : MonoBehaviour { int number; public void Empezar() { number = Random.Range(1,4); if (number == 1) { SceneManager.LoadScene ("GAME"); } if (number == 2) { SceneManager.LoadScene ("
public class EmpezarJuego : MonoBehaviour {
int number;
public void Empezar() {
number = Random.Range(1,4);
if (number == 1) {
SceneManager.LoadScene ("GAME");
}
if (number == 2) {
SceneManager.LoadScene ("GAME_1");
}
if (number == 3) {
SceneManager.LoadScene ("GAME_2");
}
if (number == 4) {
SceneManager.LoadScene ("GAME_3");
}
}
}
我想:如果数字=1,我的场景就是游戏,如果数字=2,那么我的场景就是游戏1。。。。但是它不起作用为什么??要让SceneManager发挥作用,您需要将场景添加到构建索引中。您可以通过以下方式执行此操作: 文件->构建设置->添加打开的场景 之后,您可以调用
SceneManager.LoadScene(“NameOfScene”)
,或者,例如,如果您想加载下一个级别,您可以编写
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
要加载生成索引列表中的下一个场景。要使SceneManager正常工作,您需要将场景添加到生成索引中。您可以通过以下方式执行此操作: 文件->构建设置->添加打开的场景 之后,您可以调用
SceneManager.LoadScene(“NameOfScene”)
,或者,例如,如果您想加载下一个级别,您可以编写
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
加载生成索引列表中的下一个场景。根据,Random.Range
返回介于和最小值[包括]和最大值[排除]之间的随机整数
这意味着您必须执行Random.Range(1,5)
才能在命中第四个时执行该操作
希望能解决它
另外,如果
阻塞,则应使用开关(数字)
而不是。根据,随机范围
返回介于和最小值[包括]和最大值[排除]之间的随机整数
这意味着您必须执行Random.Range(1,5)
才能在命中第四个时执行该操作
希望能解决它
另外,如果
阻塞,您应该使用开关(编号)
而不是。它以什么方式不工作?您的代码是否至少输入了适当的if语句?另外,int值的Random.Range()
的上限是互斥的-这意味着如果您希望数字从1到4,您实际上应该使用Random.Range(1,5)
。它以什么方式不起作用?你把场景添加到构建索引了吗?哈哈@Fredrik+1!我忘了在构建索引中添加场景!谢谢您可以使用SceneManager.LoadScene(“游戏+(数字-1).ToString())
将if/else
语句的8
行代码简化为1
。现在将第一个游戏场景更改为第0场。@Fredrik您可能应该发布一个答案,这样他就可以结束这个问题。如果现在一切都正常了,那么它在哪方面不正常呢?您的代码是否至少输入了适当的if语句?另外,int值的Random.Range()
的上限是互斥的-这意味着如果您希望数字从1到4,您实际上应该使用Random.Range(1,5)
。它以什么方式不起作用?你把场景添加到构建索引了吗?哈哈@Fredrik+1!我忘了在构建索引中添加场景!谢谢您可以使用SceneManager.LoadScene(“游戏+(数字-1).ToString())
将if/else
语句的8
行代码简化为1
。现在将第一个游戏场景更改为第0场。@Fredrik您可能应该发布一个答案,这样他就可以结束这个问题。如果现在一切正常,那么最好再加上他的随机范围(1,4)永远不会有值4。真的!除非您使用的是浮动,其中最大值是包含的int Random.Range
具有独占的最大值。最好添加他的Random.Range(1,4)将永远不会有值4。的确!除非您使用的是浮动,其中最大值是包含的int Random.Range
具有独占的最大值。我知道它是如何工作的,但根据文档,它说最小值和最大值都是包含的。。。但是如果你需要+1它才能将其包括在内,那么max显然是不包括在内的。它说明max是包含的,所以使用Random.Range(0.0f,1.0f)可以返回1.0作为值。在文档中,这表明情况并非如此。但显然不是这样,我只是自己测试了一下。古怪的头脑。这就是浮子过载。int重载有一个唯一的最大值。这很有意义,哈哈。我知道它是如何工作的,但根据文档,它说最小值和最大值都是包含的。。。但是如果你需要+1它才能将其包括在内,那么max显然是不包括在内的。它说明max是包含的,所以使用Random.Range(0.0f,1.0f)可以返回1.0作为值。在文档中,这表明情况并非如此。但显然不是这样,我只是自己测试了一下。古怪的头脑。这就是浮子过载。int重载有一个唯一的最大值。这很有意义,哈哈。