c# - 在拖放游戏中匹配对象

标签 c# unity3d gameobject

我正在开发一款教育游戏,让用户选择单词。目标是通过单独拖动每个单词并将其按顺序放置在提供的区域中,将这些单词排列成一个句子。我有一个平面准备好将每个单词拖到上面,但我不确定如何确定用户是否已将他们的单词拖到句子中的正确位置。

我想也许我可以为每个单词提供一个 ID/标签,并为每个平面提供一个相关的 ID/标签。当两者发生碰撞时,我可以比较这两个 ID,如果它们匹配,则认为这是一个成功的放置。

我想知道是否还有其他人有更好的解决方案,因为我不确定解决此问题的最佳方法?

最佳答案

你的想法很好,我不明白为什么不呢。如果您有很多单词,这取决于您如何实现这一点,您可以做很多工作,对吗?

我建议您这样做:制作一个包含 2 个碰撞器(及其各自的游戏对象)和一个脚本的预制件。一个单词对撞机和一个正确位置的对撞机。该脚本将从某处(资源 xml、编辑器中的字段等)读取并应用单词的初始位置和“正确位置”对撞机的位置。该脚本还将读取其他信息(如实际单词)并对这些对象进行所有配置。

这样您就可以轻松地将“word prefabs”拖到您的场景中并单独配置它们。

此外,您可以在场景中使用一个外部脚本来表示该“关卡”(如果该概念适用于您的游戏...),而不是拖动此预制件。这里的想法是该脚本可以在运行时加载该“级别”的预制件。它甚至可以传递预制脚本的所有数据来配置对象,就像我之前说的那样。

我忘了说最重要的区别:在这种方法中,您不必担心 ID。它们属于同一个 GameObject 父级,因此您可以轻松地在脚本中检索所需的对象。

关于c# - 在拖放游戏中匹配对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9951052/

相关文章:

c# - WPF ComboBox IsSynchronised 默认值

c# - 将 DLL 导入 Unity - 找不到类型或命名空间

c# - 命名 MonoBehaviour 类 GameManager 时的特殊图标

c# - 检查是否激活多个游戏对象

c# - 如何更新 Unity GameObject 以沿样条曲线移动?

c# - 当我在 C# 中构建 Windows 服务时,为什么我的二进制文件没有放在/bin/release 文件夹中?

c# - 当变量在 C# 中定义匿名类时,如何在 block 外部声明变量

c# - C# 中的带宽限制

unity3d - 在 Unity3D 中将 alpha 添加到着色器

c# - Unity 5 游戏对象序列化