Unity关于IsPointerOverGameObject接口真机失效问题

在制作游戏时,有时需要发射射线执行游戏的相关功能,但是在点击UI的同时,却也会触发游戏内的相关功能,为了规避此事件的发生,Unity提供了一个名为EventSystem.current.IsPointerOverGameObject()的函数,使用这个函数可以规避点在UI上依旧会触发游戏功能。但是在电脑上运行无误,打包成apk到真机上之后,这个函数会失效。

所以我们用如下代码对此接口进行优化,示例代码如下:

   public static bool IsPointerOverGameObject()
        {
            PointerEventData eventData = new PointerEventData(UnityEngine.EventSystems.EventSystem.current);
            eventData.pressPosition = Input.mousePosition;
            eventData.position = Input.mousePosition;
            List<RaycastResult> list = new List<RaycastResult>();
            UnityEngine.EventSystems.EventSystem.current.RaycastAll(eventData, list);
            return list.Count > 0;
        }

调用优化后的接口即可

    if (IsPointerOverGameObject() == false)

此接口多数情况下工作正常,但是有一种情况会失效。当点击关闭按钮关闭某个界面或UI时。还是会出现点到UI,界面顺利关闭的情况下触发游戏功能。解决方法只能延缓界面的关闭。示例代码如下:

   public void CloseChangeWindow()
    {
       Invoke("RealClose",0.1f);
    }

    private void RealClose()
    {
        ChangeWindow.SetActive(false);
    }

如有更好的解决方法欢迎留言探讨。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用Unity AVPro Video在iOS真机上时,可能会遇到以下问题: 1. 硬件解码问题:iOS设备通常使用硬件解码来播放视频。然而,AVPro Video可能无法适应所有iOS设备的硬件解码要求,导致一些设备上的视频播放出现问题。为了解决这个问题,可以尝试通过调整解码设置或使用软件解码来确保视频的正常播放。 2. 兼容性问题:AVPro Video可能与某些iOS版本或设备上的特定播放器不兼容。这可能导致视频播放过程中出现崩溃或其他问题。为了解决兼容性问题,可以尝试更新AVPro Video库,或者通过与Unity和iOS版本兼容的播放器来播放视频。 3. 性能问题:AVPro Video在iOS设备上播放高清视频可能会导致性能问题,特别是在较旧的设备上。这可能导致视频卡顿或播放不流畅。为了提高性能,可以尝试降低视频的分辨率或帧率,并使用适当的编码参数。 4. 音频同步问题:有时,在使用AVPro Video播放视频时,音频可能会与视频不同步。这可能是由于iOS设备上的音频处理引擎和AVPro Video之间的不匹配所致。为了解决这个问题,可以尝试使用外部音频库或工具,或者通过调整音频设置来确保音频和视频的同步播放。 总结来说,使用Unity AVPro Video在iOS真机上可能遇到硬件解码、兼容性、性能和音频同步等问题。通过调整设置、更新库版本、使用兼容的播放器或外部音频库,可以解决这些问题并确保视频的正常播放。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值