Unity3d:没有设置拖放

Unity3d: No Drag&Drop has been setup

我在 OS X 10.10 上开发一个 Unity 2D 游戏项目,我不能拖动文件或文件夹,它会显示这个错误。

No Drag&Drop has been setup. Please
UnityEditor.DockArea:OnGUI()

我试过:

  1. 保存项目然后重启
  2. 单击 Assets 文件夹并选择 Reimport All

但是好像不行,怎么解决?

Unity 使用 NSPasteboard(OSX 剪贴板的共享管理器)来保存拖放数据,因此任何 monitors/modifies 剪贴板的进程都可能会干扰拖放。

我认为可能有一个 Chrome 扩展会生成通知,由于某种原因会中断拖放。 禁用 google chrome 中的所有扩展,如果这不能解决您在 Unity 中的问题,请重新安装 google chrome.

编辑:根据其他用户的建议,另一个可能有效的解决方案是

Quit Unity and force quit the pboard process via Activity Monitor and then launch Unity again.

希望对您有所帮助。

最近我遇到了同样的问题,我所做的就是退出 Unity 并通过 Activity Monitor[=14= 强制退出 pboard 进程] 然后再次启动 Unity,它对我有用。

根据 Sinyo 提供的答案,我创建了一个小的 shell 脚本来加速这个过程,我想我会分享。 [仅限 Mac] 它关闭 Unity,终止 pboard 进程,然后重新打开 Unity。

#!/bin/sh

osascript -e 'quit app "Unity"'

pid=$(ps -fe | grep 'pboard' | grep -v grep | awk '{print }')
if [[ -n $pid ]]; then
    kill $pid
else
    echo "Does not exist"
fi
osascript -e 'launch the application "Unity"'

我知道这是一个旧话题,但我想我可能会做出贡献。我在 属性 抽屉的实现中遇到了 "No Drag&Drop" 错误,并尝试了此处给出的所有提示但没有成功。本来都快要放弃了,归咎于unity,后来找到了解决办法。你看,我正在设置对象引用并在 mouseDown 事件期间调用 DragAndDrop.SetGenericData() 方法。 我更改了它,以便在 MouseDrag 事件中检查是否存在现有的 DragAndDrop(检查 DragAndDrop.GetGenericData() 的 return 中是否为 null)。如果它为 null,我在调用 DragAndDrop.StartDrag() 之前在 MouseDrag 期间设置数据。 这解决了问题。希望对其他人有帮助。

根据@user3130047的回答,这是另一个版本。 Mac 只有。

  1. 退出 Unity。
  2. 在控制台中,输入此命令并执行它。

    ps aux | grep pboard | grep -v grep | awk '{print }' | xargs kill -9 | launchctl start com.apple.pboard
  3. 打开Unity。


而已。

但是,这可能会导致您的另一个打开的应用程序复制和粘贴不起作用。所以,你需要重新启动它们。

这是完成最佳答案的最简单方法:

killall -HUP pboard

(显然来自终端或类似设备)