【问题标题】:Instantiating at random based on word基于单词随机实例化
【发布时间】:2019-07-12 05:30:36
【问题描述】:

我有一个词=“猫” 我有 26 个字母预制件 A - Z - 预制件阵列 我想从预制件中随机实例化 6 个预制件 所以 B,L,T,C,A,T - 以任何随机顺序 但我需要它包含构成单词 cat 的字母

我的第一个想法是使用字典/哈希图将单词 cat 映射到数组中的位置,即 C = [2] A = [0] T[] 但是 hashmap/dictionary 只需要一个键值对,但我为它提供了一个以上的值,需要 3 个字母

这是统一编程的,所以我的预制件已经在字母数组中,它只是让它们包含我的拼写。

public GameObject[] letters;
void Start() {

    int x;

    /* for loop execution */
    for (x = 0; x < 5; x = x + 1)
    {

        CreateCubes();
    }
}

     public void CreateCubes()
    {

        GameObject obj = Instantiate(letters[Random.Range(0, 26)]);
        obj.transform.position = new Vector3(

     );

【问题讨论】:

  • 如果您使用 Unity,您实际上是用 C++ 编写代码,还是使用 C#?
  • 其实,我认为这里最紧迫的问题既不是语言标签,也不是阅读您的问题的难度,而是您没有提供任何代码的事实。 Stack Overflow 旨在帮助您修复代码,而不是为您编写代码。
  • 我们可以提供帮助,但请向我们展示您如何访问您的预制件,您提到了一个数组,您可以粘贴它吗?

标签: c++ arrays unity3d random hashmap


【解决方案1】:

假设您在 GameObject[] 数组中拥有所有预制件,您可以使用它来自动填充字典

public GameObject[] prefabs = new GameObject[26];

private Dictionary<char, GameObject> CharToPrefab = new Dictionary<char, GameObject>(26);

private void Start()
{
    for (var i = 0; i < 27; i++)
    {
        // add 0 to 26 to the start character A
        // results in A-Z
        CharToPrefab[(char)('A' + i)] = prefabs[i];
    }
}

你可以通过调用访问某个预制件

CharToPrefab[character];

为了生成实例(最简单的版本,不考虑任何双打),您可以这样做,例如

public void RandomLetters(string word)
{
    // 1. spawn the minimum required letters to build the word
    foreach (var letter in word)
    {
        var obj = Instantiate(CharToPrefab[letter]);
        // maybe use obj for something e.g. shuffel all instantiated objects positions
    }

    // 2. fill the rest with random letters
    // assuming always same amount as word letters
    var rand = new System.Random();
    foreach (var letter in word)
    {
        // pics a number from 0 to 26
        // and adds it to the char -> results in A-Z
        var randomChar = (char)('A' + rand.Next(0, 27));
        var obj = Instantiate(CharToPrefab[randomChar]);
        // maybe use obj for something e.g. shuffel all instantiated objects positions
    }
}

【讨论】:

  • 谢谢,我会试试看效果如何
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-24
  • 1970-01-01
  • 2015-07-12
  • 1970-01-01
  • 1970-01-01
  • 2018-04-11
  • 2015-01-03
相关资源
最近更新 更多