C# 统一-在游戏中收集字母后,我们如何在该级别的ed中生成随机单词
我目前正在Unity中做一个2D儿童游戏项目,其想法是让角色收集地图上的字母,在关卡结束时,收集的字母形成一个随机单词。我在想,这可能是通过一个文本文档来完成的,其中包含单词,字母可以在最后生成单词。我不确定这是怎么发生的,还是有不同的选择 你是否知道这是如何发生的,以及如何生成字母数量可能最大的单词(现有单词中最长的单词之一),因为在几级之后,玩家必须创建一个有意义的句子,这将给他们分数 我已将标签为“可收藏”的信件制作成: 私有无效OnTiggerEnter2D(碰撞R2D其他) { 如果(其他比较标记(“可收藏”)) { 字符串inventoryType=other.gameObject.GetComponent().inventoryType; 打印(“我们收集了:“+inventoryType”) 我用给定的字母为随机单词生成器制作了一个脚本: 公共类生成:单行为 {C# 统一-在游戏中收集字母后,我们如何在该级别的ed中生成随机单词,c#,unity3d,random,C#,Unity3d,Random,我目前正在Unity中做一个2D儿童游戏项目,其想法是让角色收集地图上的字母,在关卡结束时,收集的字母形成一个随机单词。我在想,这可能是通过一个文本文档来完成的,其中包含单词,字母可以在最后生成单词。我不确定这是怎么发生的,还是有不同的选择 你是否知道这是如何发生的,以及如何生成字母数量可能最大的单词(现有单词中最长的单词之一),因为在几级之后,玩家必须创建一个有意义的句子,这将给他们分数 我已将标签为“可收藏”的信件制作成: 私有无效OnTiggerEnter2D(碰撞R2D其他) { 如果
私有静态无效交换(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);
}