Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.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# 如何创建一个游戏对象,并使其立即可通过鼠标拖动?_C#_Unity3d_Sprite - Fatal编程技术网

C# 如何创建一个游戏对象,并使其立即可通过鼠标拖动?

C# 如何创建一个游戏对象,并使其立即可通过鼠标拖动?,c#,unity3d,sprite,C#,Unity3d,Sprite,我一直在Unity的一个宠物模拟游戏中工作。我试图构建的交互思想如下: 我有一个带有面板的UI画布,其中包含每个可用操作的精灵 预期的行为是,如果我将一个项目(精灵)从UI面板拖动到“3D世界”,它将在当前鼠标位置实例化该项目的3D版本,并且它将立即被鼠标拖动 首先,我不知道这是否可能,我也不知道怎么做 我已经尝试过实例化这个游戏对象,并给它一个允许拖放的脚本。在实例化时已经给了它鼠标位置,但是它不会附加到鼠标上,因为我一开始没有单击它 我知道如何以单独的方式做事,但不知道如何一起做,我甚至

我一直在Unity的一个宠物模拟游戏中工作。我试图构建的交互思想如下:

  • 我有一个带有面板的UI画布,其中包含每个可用操作的精灵

  • 预期的行为是,如果我将一个项目(精灵)从UI面板拖动到“3D世界”,它将在当前鼠标位置实例化该项目的3D版本,并且它将立即被鼠标拖动

首先,我不知道这是否可能,我也不知道怎么做

我已经尝试过实例化这个游戏对象,并给它一个允许拖放的脚本。在实例化时已经给了它鼠标位置,但是它不会附加到鼠标上,因为我一开始没有单击它

我知道如何以单独的方式做事,但不知道如何一起做,我甚至不知道这是否可行


有人有建议吗?或者以前做过吗?

如果不知道您的确切场景设置,也不知道您是否使用Unity的事件系统、Touch类或任何外部库,则很难给出准确的解决方案

但是,以下是一些可以帮助您的一般想法:

  • 您不必检测来自3d对象的触摸。由于根据选择的2d精灵实例化3d对象,这意味着2d精灵“知道”3d对象。因此,在创建后,2d精灵可以禁用其图像,但仍然可以检测拖动信息并调用3d对象上的函数来更新其位置

  • 更进一步,您甚至可以实例化Begging中的所有3d对象,但禁用网格渲染器组件,使其不可见。2d精灵仅在正确的位置使其可见

  • 如果仍然希望3d对象自己检测触摸,请查看unity的IDragHandler界面。有一个脚本来实现它,您将在对象上接收拖动事件,而不必首先检测到单击


先阅读教程。太宽了。@user202729我已经做到了。我没有读过所有的东西,但我已经花了6个月的时间在Unity上。我只是需要一个如何建立这种互动的想法。无论如何谢谢你。@HenriqueFerreira,你能告诉我们你用鼠标拖动它的方法吗?在您第一次释放鼠标按钮后,该对象是否也可以拖动?(所以我在我的店里放了一只小狗,我可以点击它,稍后再移动它吗?)非常感谢,我用IDragHandler接口实现了它。非常感谢,它工作得很好。