iphonex上滑关闭设置_Unity2017.3.1f1 误操作>=iPhoneX 上滑home虚拟条一次退出游戏的解决方案...

解决方案:第一次上滑home虚拟条手机颤抖颜色加深(反馈用户:如果短时间内你再上滑一次,就退出游戏了);(满足前面括号要求的)第二次上滑home虚拟条,才退出游戏。

要达到这个目的,只需要 把/Classes/UI/UnityViewControllerBase+iOS.mm里下图的代码

//图一

- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures

{

UIRectEdge res = UIRectEdgeNone;

if (UnityGetDeferSystemGesturesTopEdge())

res |= UIRectEdgeTop;

if (UnityGetDeferSystemGesturesBottomEdge())

res |= UIRectEdgeBottom;

if (UnityGetDeferSystemGesturesLeftEdge())

res |= UIRectEdgeLeft;

if (UnityGetDeferSystemGesturesRightEdge())

res |= UIRectEdgeRight;

return res;

}

替换为下图的代码

//图二

- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures

{

return UIRectEdgeAll;

}

如果每次(Replace)Build Xcode工程后,都需要去Xcode工程/Classes/UI/UnityViewControllerBase+iOS.mm手动替换代码,就很麻烦。下面我给大家写了一个类,Build Xcode工程时自动替换代码:

#if UNITY_IOS

using UnityEngine;

using UnityEditor.Callbacks;

using UnityEditor;

using UnityEditor.iOS.Xcode;

using System.IO;

using System.Text.RegularExpressions;

public class XCodeProjectMod : MonoBehaviour {

[PostProcessBuild]

public static void OnPostprocessBuild (BuildTarget BuildTarget, string path) {

if (BuildTarget == BuildTarget.iOS) {

string viewControllerBasePath = path + "/Classes/UI/UnityViewControllerBase+iOS.mm";

if (File.Exists(viewControllerBasePath)) {

string viewControllerBaseString = File.ReadAllText(viewControllerBasePath);

//图一代码替换图二代码的正则表达式。 \S 匹配任何非空白字符。等价于[^ \f\n\r\t\v]。

viewControllerBaseString = System.Text.RegularExpressions.Regex.Replace(viewControllerBaseString, @"- \(UIRectEdge\)preferredScreenEdgesDeferringSystemGestures\n{\n[\s\S]*?}", "- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures\n{\n return UIRectEdgeAll; \n}");//+?最短匹配

File.WriteAllText(viewControllerBasePath, viewControllerBaseString);

} else {

Debug.LogError(viewControllerBasePath + " Can not find");

}

}

}

}

#endif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值