C# 如何创建一个游戏对象,并使其立即可通过鼠标拖动?
我一直在Unity的一个宠物模拟游戏中工作。我试图构建的交互思想如下:C# 如何创建一个游戏对象,并使其立即可通过鼠标拖动?,c#,unity3d,sprite,C#,Unity3d,Sprite,我一直在Unity的一个宠物模拟游戏中工作。我试图构建的交互思想如下: 我有一个带有面板的UI画布,其中包含每个可用操作的精灵 预期的行为是,如果我将一个项目(精灵)从UI面板拖动到“3D世界”,它将在当前鼠标位置实例化该项目的3D版本,并且它将立即被鼠标拖动 首先,我不知道这是否可能,我也不知道怎么做 我已经尝试过实例化这个游戏对象,并给它一个允许拖放的脚本。在实例化时已经给了它鼠标位置,但是它不会附加到鼠标上,因为我一开始没有单击它 我知道如何以单独的方式做事,但不知道如何一起做,我甚至
- 我有一个带有面板的UI画布,其中包含每个可用操作的精灵
- 预期的行为是,如果我将一个项目(精灵)从UI面板拖动到“3D世界”,它将在当前鼠标位置实例化该项目的3D版本,并且它将立即被鼠标拖动
有人有建议吗?或者以前做过吗?如果不知道您的确切场景设置,也不知道您是否使用Unity的事件系统、Touch类或任何外部库,则很难给出准确的解决方案 但是,以下是一些可以帮助您的一般想法:
- 您不必检测来自3d对象的触摸。由于根据选择的2d精灵实例化3d对象,这意味着2d精灵“知道”3d对象。因此,在创建后,2d精灵可以禁用其图像,但仍然可以检测拖动信息并调用3d对象上的函数来更新其位置
- 更进一步,您甚至可以实例化Begging中的所有3d对象,但禁用网格渲染器组件,使其不可见。2d精灵仅在正确的位置使其可见
- 如果仍然希望3d对象自己检测触摸,请查看unity的IDragHandler界面。有一个脚本来实现它,您将在对象上接收拖动事件,而不必首先检测到单击