Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 统一-在游戏中收集字母后,我们如何在该级别的ed中生成随机单词_C#_Unity3d_Random - Fatal编程技术网

C# 统一-在游戏中收集字母后,我们如何在该级别的ed中生成随机单词

C# 统一-在游戏中收集字母后,我们如何在该级别的ed中生成随机单词,c#,unity3d,random,C#,Unity3d,Random,我目前正在Unity中做一个2D儿童游戏项目,其想法是让角色收集地图上的字母,在关卡结束时,收集的字母形成一个随机单词。我在想,这可能是通过一个文本文档来完成的,其中包含单词,字母可以在最后生成单词。我不确定这是怎么发生的,还是有不同的选择 你是否知道这是如何发生的,以及如何生成字母数量可能最大的单词(现有单词中最长的单词之一),因为在几级之后,玩家必须创建一个有意义的句子,这将给他们分数 我已将标签为“可收藏”的信件制作成: 私有无效OnTiggerEnter2D(碰撞R2D其他) { 如果

我目前正在Unity中做一个2D儿童游戏项目,其想法是让角色收集地图上的字母,在关卡结束时,收集的字母形成一个随机单词。我在想,这可能是通过一个文本文档来完成的,其中包含单词,字母可以在最后生成单词。我不确定这是怎么发生的,还是有不同的选择

你是否知道这是如何发生的,以及如何生成字母数量可能最大的单词(现有单词中最长的单词之一),因为在几级之后,玩家必须创建一个有意义的句子,这将给他们分数

我已将标签为“可收藏”的信件制作成:

私有无效OnTiggerEnter2D(碰撞R2D其他) {

如果(其他比较标记(“可收藏”)) { 字符串inventoryType=other.gameObject.GetComponent().inventoryType; 打印(“我们收集了:“+inventoryType”)

我用给定的字母为随机单词生成器制作了一个脚本:

公共类生成:单行为 {

私有静态无效交换(ref char a,ref char b)
{
如果(a==b)返回;
var-temp=a;
a=b;
b=温度;
}
公共静态void GetPer(char[]列表)
{
INTX=列表长度-1;
GetPer(列表,0,x);
}
私有静态void GetPer(char[]列表,int k,int m)
{
如果(k==m)
{
打印(列表);
}
其他的

对于(int i=k;i对于每个带有字母的游戏对象,您可以添加带有字母的标签,例如: “a”表示字母a,“h”表示字母h,依此类推

然后在播放器的脚本中,您可以添加:
作废OnTiggerEnter2D(Collision2D other),并在其内部使用if(other.compareTag(“a”))检查每个标记,并对每个字母执行此操作。如果compare标记返回true,则可以将字母添加到Char Letters Collected[]或者在列表中,然后用简单的for和random.range或其他任何东西随机选择它们。

谢谢。你给了我一个方向。我没有在每个字母上做不同的标记,而是用ta collectable将它们全部制作成可收集的,之后我制作了一个脚本,显示玩家收集的内容。现在我有一个不同的问题。我制作了一个随机生成器,用于给定字母的单词,但我不知道如何将其与游戏中的字母连接起来,然后如何使其不仅在控制台中可见,而且在关卡结束时在我的胜利屏幕上可见。附言:我为迟来的回答道歉!我还有其他项目要处理。你可以提取字符并创建一个字符串单词=c1+c2+c3…,然后在菜单中显示公共文本,然后显示Text.Text=word;
        inventory.Add(inventoryType);
        print("Inventory length:" + inventory.Count);
        Destroy(other.gameObject);
    }
}
    private static void Swap(ref char a, ref char b)
    {
        if (a == b) return;

        var temp = a;
        a = b;
        b = temp;
    }

    public static void GetPer(char[] list)
    {
        int x = list.Length - 1;
        GetPer(list, 0, x);
    }

    private static void GetPer(char[] list, int k, int m)
    {
        if (k == m)
        {
            print(list);
        }
        else
            for (int i = k; i <= m; i++)
            {
                Swap(ref list[k], ref list[i]);
                GetPer(list, k + 1, m);
                Swap(ref list[k], ref list[i]);
            }
    }

    static void Main()
    {
        string str = "sagiv";
        char[] arr = str.ToCharArray();
        GetPer(arr);
    }