【问题标题】:Unity Touch and UI Element works togetherUnity Touch 和 UI Element 协同工作
【发布时间】:2016-09-26 12:11:14
【问题描述】:

我正在制作一款 2D 平台游戏。我使用 UI 元素进行拍摄,角色通过触摸屏幕移动。

以便移动角色

void Update()
{
    if (Input.touches.Length>0) {
        Touch firstTouch = Input.GetTouch (0);
        if (firstTouch.phase == TouchPhase.Began) {
            if (firstTouch.position.x > ScreenCenterX) {
                sagHareketBasili ();//Move Right
            } 
            if (firstTouch.position.x < ScreenCenterX) {
                solHareketBasili ();//Move Left
            } 
        } else 
            sagHareketBasiliDegil ();//Stop
            solHareketBasiliDegil ();//Stop
        }
    }
}

所以我在互联网上做了一些研究。我将代码更改为

void Update()
{
    if (Input.touches.Length>0) {
        if (!EventSystem.current.IsPointerOverGameObject ()) {
            Touch firstTouch = Input.GetTouch (0);
            if (firstTouch.phase == TouchPhase.Began) {
                if (firstTouch.position.x > ScreenCenterX) {
                    sagHareketBasili ();
                } 
                if (firstTouch.position.x < ScreenCenterX) {
                    solHareketBasili ();
                } 
            } else if (firstTouch.phase == TouchPhase.Ended) {
                sagHareketBasiliDegil ();
                solHareketBasiliDegil ();
            }
        }
    }
}

看来问题解决了。但不是。 首先,当我触摸 UI 元素之外的字符移动时。如果我第一次接触 UI 元素,角色移动和 UI 元素会起作用(两者不应该一起工作)。如果我第二次触摸 UI 元素,我就成功了我想做的事情(只是 UI 元素有效)。也就是说,角色不动,UI 工作正常。 其次,在我触摸 UI 元素后,如果我想让角色移动并触摸到 UI 元素之外,第一次触摸没有任何反应,但第二次及更多触摸后,角色开始按我的意愿移动。

在 UI 元素中我使用了按钮和事件触发器。

请提供任何帮助...

【问题讨论】:

    标签: user-interface unity3d touch 2d platform


    【解决方案1】:

    您可以创建两个大的透明按钮,而不是使用Input.Touch,一个覆盖左半边屏幕,另一个覆盖右半边屏幕。并在每个按钮的 OnClick 事件中分别调用左移和右移代码。由于这两个按钮都在您通常的 UI 下,因此如果您与其他 UI 交互,它们将不会被触发。并将它们的透明度设置为 0,以便您可以看到它们背后的游戏玩法。

    【讨论】:

    • 非常感谢您的回答。我会尝试并分享结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 2017-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多