首页 > 解决方案 > 如何将随机数组与主题相关的数组连接起来?

问题描述

我正在制作一个小应用程序来随机选择迪士尼世界的一个公园供我去,一旦我在那个公园,我就想按下按钮 - “我应该骑什么?” 让它告诉我在它为我挑选的公园的那部分进行什么骑行。

就像它说的

“去动物王国”然后当我按下“我应该骑什么?”

我想让它说“探险珠穆朗玛峰”。但它随机选择一个公园,所以我不确定如何链接另一个随机但匹配的数组,因为公园和骑行在公园的同一部分。

代码示例:

public void LoadNextScene()
{
    int currentSceneIndex = SceneManager.GetActiveScene().buildIndex;
    SceneManager.LoadScene(currentSceneIndex + 1);
}

public void LoadStartScene()
{
    SceneManager.LoadScene(0);
}

public void OnPressPap()
{
    SceneManager.LoadScene(1);
}

public void OnPressRides()
{
    SceneManager.LoadScene(2);
}

上面是我按下按钮后的简单场景加载器。

{
    public string[] ParkNameArray;
    public string ParkName;
    public TextMeshProUGUI ParkNameText;    
    private void Start()
    {
        ParkName = ParkNameArray[Random.Range(0, ParkNameArray.Length)];
        ParkNameText.text = ParkName.ToString();
    }    
}

以上是我的数组和我统一使用的随机范围进行编辑。

我将在下面添加一些图像,说明我丑陋的 UI 以及公园的数组列表。

统一的数组列表(仅限公园 atm)

选车

下面的这张图片是我要按“骑什么?”的地方。按钮,它与刚刚被选中的公园有关。

随机选择的骑行与随机事实

标签: c#unity3d

解决方案


对象

这就是为什么OOP是一回事。

与其创建两个数组并试图找出谁将一个数组链接到另一个数组,不如将这些数组折叠成对象并创建一个数组

例如,每个公园(对象)都包含游乐设施(一个数组)。有多个(一系列)公园。

public class Park {
    public string parkName;
    public Ride[] listOfRides; //Ride is similarly defined like Park is
}

然后你的其他代码:

{
    public Park[] ParksArray;
    //...
}

现在您只需随机选择一个公园,获取它的游乐设施,然后从该列表中随机选择一个游乐设施:

int randPark = Random.Range(0, ParksArray.Length);
Ride[] availableRides = ParksArray[randPark].listOfRides;
int randRide = Random.Range(0, availableRides.Length);
Debug.Log(ParksArray[randPark].name + ":" + availableRides[randRide].name);

推荐阅读