我正在使用 Unity UI Toolkit 和新输入系统。
我的游戏逻辑是当我按下鼠标左键时,对象应该开始移动。视图中还有一个电源按钮,我使用 UI Toolkit 创建并编写了这样的脚本。
void Start()
{
VisualElement menuRoot = GetComponent<UIDocument>().rootVisualElement;
Button firstPowerUp = menuRoot.Q<Button>("first_power_up");
firstPowerUp.clicked += () => {
Perform();
};
}
void Perform()
{
Debug.Log("Clicked on power-up!");
}
按钮可以工作,好吧。但输入操作也有效。所以,我的按钮和对象移动一起工作。我该如何解决这个问题或单独的输入系统?
我尝试了很多方法:
看起来您不需要每次单击时都移动对象(例如按钮单击的情况),因此您不应该将鼠标单击直接绑定到对象移动。
1,创建脚本,当您执行鼠标单击而不是旧的移动脚本时,该脚本将收到信号。
2、将此检查添加到新脚本中:
if (!EventSystem.current.IsPointerOverGameObject())
{
//cursor isn't over ui, move object now
}
else
{
//cursor is over some ui, don't move object
}