【问题标题】:How do I load random levels?如何加载随机关卡?
【发布时间】:2011-06-24 10:03:26
【问题描述】:

我正在使用 Unity 3 构建我的游戏。我有一个基本的 GUI 按钮,单击该按钮时,我希望将用户带到一个随机级别。我的游戏有 10 个关卡。下面是我正在尝试实现的代码的副本。

function OnGUI()
{
    // Make a background box
    GUI.Box(Rect(10, 10, 100, 90), "Oracle");

    if (GUI.Button(Rect(20, 40, 80, 20), 9)) ;
    {
        Application.LoadLevel(Random.Range(0, 9));
    }
}

这没有发生。我也试过:

function OnGUI()
{
    // Make a background box
    GUI.Box(Rect(10, 10, 100, 90), "Oracle");


    if (GUI.Button(Rect(20, 40, 80, 20))) ;
    {
        Application.LoadLevel(Random.Range(0, Application.levelCount 9));
    }
}

我以前从未使用过 Random.Range 函数,并且对正确的格式有些困惑。

我还有可用的 EZ GUI,我想知道是否可以在“脚本”下拉菜单或“带有方法的脚本”下拉菜单中输入正确的随机范围脚本,因为我宁愿使用自定义按钮。任何帮助将不胜感激。

【问题讨论】:

    标签: user-interface unity3d unityscript levels


    【解决方案1】:

    这是有效的代码。我将重建并添加更多关卡,我将直接从 Unity 文档中尝试,看看随机场景是否仅从构建中的场景数量加载。谢谢数字D

    static var levelCount : int;
    
    function OnGUI () {
       // Make a background box
        GUI.Box (Rect (10,10,100,90), "ORACLE");
    
        if (GUI.Button (Rect (20,40,80,20), "Genie")) {
            Application.LoadLevel (Random.Range(0, Application.levelCount-5));
        }
    }
    

    【讨论】:

      【解决方案2】:

      Unity 文档中的示例代码应该可以正常工作。 "Application.LoadLevel(Random.Range(0, Application.levelCount))" 将加载一个随机场景。级别编号基于构建设置中的顺序。您是否可能忘记将它们包含在构建中?仅仅有 10 个场景是不够的,如果它们不包含在构建中,它们将被删除。

      【讨论】:

      • 感谢@DonavanStanley 的回答。我的构建中确实有级别名称和订单号。然而,最开始的是将级别的名称从字母数字更改为整数 1-10。
      猜你喜欢
      • 2016-03-21
      • 1970-01-01
      • 2017-10-13
      • 1970-01-01
      • 2019-01-14
      • 1970-01-01
      • 1970-01-01
      • 2021-02-27
      • 1970-01-01
      相关资源
      最近更新 更多