Unity3d:没有设置拖放
Unity3d: No Drag&Drop has been setup
我在 OS X 10.10 上开发一个 Unity 2D 游戏项目,我不能拖动文件或文件夹,它会显示这个错误。
No Drag&Drop has been setup. Please
UnityEditor.DockArea:OnGUI()
我试过:
- 保存项目然后重启
- 单击
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 只有。
- 退出 Unity。
- 在控制台中,输入此命令并执行它。
ps aux | grep pboard | grep -v grep | awk '{print }' | xargs kill -9 | launchctl start com.apple.pboard
- 打开Unity。
而已。
但是,这可能会导致您的另一个打开的应用程序复制和粘贴不起作用。所以,你需要重新启动它们。
这是完成最佳答案的最简单方法:
killall -HUP pboard
(显然来自终端或类似设备)
我在 OS X 10.10 上开发一个 Unity 2D 游戏项目,我不能拖动文件或文件夹,它会显示这个错误。
No Drag&Drop has been setup. Please
UnityEditor.DockArea:OnGUI()
我试过:
- 保存项目然后重启
- 单击
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 只有。
- 退出 Unity。
- 在控制台中,输入此命令并执行它。
ps aux | grep pboard | grep -v grep | awk '{print }' | xargs kill -9 | launchctl start com.apple.pboard
- 打开Unity。
而已。
但是,这可能会导致您的另一个打开的应用程序复制和粘贴不起作用。所以,你需要重新启动它们。
这是完成最佳答案的最简单方法:
killall -HUP pboard
(显然来自终端或类似设备)