在AR平面生成游戏对象,除了按钮UI区域



我正在开发一个AR测量工具,我将我的测量点磁盘放在AR平面上。我为此添加了一个撤销和重做按钮,因为有机会使用撤销按钮删除最后放置的点。

现在我的问题是,当我点击撤销按钮时,点磁盘被放置在按钮和撤销按钮后面,只有在那个地方。重做按钮也一样。如果没有重做重生的值,对象在重做按钮后面被生成,就好像我在实例化按钮后面的点磁盘一样,我没有这样做。

这将是有帮助的,如果有人能给我一个想法,如何确保我产卵的对象,但不是当我点击按钮。然而,按钮完成了分配给它的工作。

我以两个视频作为参考,并将代码合并在其中。

使用命令设计模式的撤销-重做按钮链接

对于没有AR放置的对象放置之间的线渲染可交互

我使用了Undo-Redo的代码,而不是AR Interactable。

我也使用这种方法来删除按钮上的产卵代码,但然后按钮根本不起作用。

public void UndoCommands()
{
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
if (undoHistoryStack.Count > 0 && !EventSystem.current.IsPointerOverGameObject(touch.fingerId))
{
//Code that is going to work when this function is called
}
}
}

这段代码将被添加到Undo Button中,类似的也适用于Redo。

我一直在努力解决这个问题。如果需要其他细节,我会尽量分享。但是,请帮帮我。

我不知道有多少人看过上面提到的视频,仍然在寻找答案,但我已经找到了适合我的解决方案。如果你看过撤消重做视频,你会看到有一个文件名ClickManager.cs,其中的数据被传递给实例化对象和撤消重做函数。在该文件中,添加这两行:

void Update()
{
if (Input.GetMouseButtonDown(0))
{
if (EventSystem.current.IsPointerOverGameObject())
return;
Ray ray = arCamera.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit, Mathf.Infinity))
{
commandingManager.ExecuteCommands(new Instantiat(spawnObject, hit.point, txt, lineRenderer, measurementValueParent, measurementPointParent));
}
}
}

添加了上面提到的行,以确保如果我单击按钮,不会产生任何对象,并且对象的onClick()函数工作。

相关内容

  • 没有找到相关文章

最新更新