【问题标题】:Unity3D KeyCode.Home issue?Unity3D KeyCode.Home 问题?
【发布时间】:2017-09-09 17:39:45
【问题描述】:

您好,我有一行代码可以在按下底部的三个硬件按钮(如菜单、主页、返回)时退出游戏 好像只有后面和家在工作,但菜单不工作

我有一部小米红米 Note 4X 手机,我想如何解决这个问题?

它是不是和其他手机一样的“菜单”,当你按下它时,它会显示打开的应用程序列表

代码如下:

if (Input.GetKey (KeyCode.Home) || Input.GetKey (KeyCode.Escape) || Input.GetKey (KeyCode.Menu))
    {
        Save ();
        System.Diagnostics.Process.GetCurrentProcess ().Kill ();
    }

【问题讨论】:

    标签: c# button unity3d input exit


    【解决方案1】:

    当你按下它时,它与另一部手机的“菜单”是否相同, 它会显示打开的应用程序列表

    是的。

    我有一部小米红米 Note 4X 手机,我想如何解决这个问题 问题?

    它应该可以工作,否则它是一个错误,您应该提交一个错误请求。在提交错误请求之前,请使用下面的脚本使菜单键不映射到另一个键。

    public class KeyCodeFinder : MonoBehaviour
    {
        public Text text;
    
        Array allKeyCodes;
    
        void Start()
        {
            allKeyCodes = System.Enum.GetValues(typeof(KeyCode));
        }
    
        void Update()
        {
            foreach (KeyCode tempKey in allKeyCodes)
            {
                if (Input.GetKeyDown(tempKey))
                {
                    text.text = "Pressed: KeyCode." + tempKey;
                    Debug.Log("Pressed: KeyCode." + tempKey);
                }
            }
        }
    }
    

    同时,您可以制作一个 Java 插件,在按下菜单键码时调用您的 C# 函数。这是您的另一种选择。

    【讨论】:

    • 似乎只有后退按钮正在更新 UI 文本,其他 2 个按钮没有更新 UI,但即使没有更新,我也可以完全正常使用主页按钮?但是对于菜单问题仍然无法正常工作
    【解决方案2】:

    这些按钮与操作系统相关,您无法真正控制这些按钮会发生什么。好吧,您可以跟踪它们并杀死您的应用程序,但这与每个应用程序的做法背道而驰。也就是说,如果您按下后退或主页或退出,它会返回到主 OS 页面,但您的应用程序仍在堆栈中准备返回。

    如果你想在用户退出时保存,也许你想看看

    https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnApplicationPause.html

    这将使您的应用以更常见的方式运行。

    顺便说一句,我什至认为这种过度控制应用程序的尝试会被 AppStore (iOS) 拒绝,因为它不符合他们的一般要求。

    【讨论】:

      【解决方案3】:

      始终可以映射迄今为止尚未映射的自定义 KeyCode。

      首先找出钥匙有什么键码

      Event e = Event.current; 
      if (e.isKey) 
      { 
          Debug.Log("Detected key code: " + e.keyCode); 
      }
      

      假设这会给你10 作为键码(到目前为止,Unity 中还没有映射KeyCode

      你可以简单地定义一个新的,比如

      KeyCode MY_HOME_BUTTON = (KeyCode) 10;
      

      而不是像使用它

      if(Input.MY_HOME_BUTTON)
      {
          ...
      }
      

      是否完全可以捕捉到主页按钮取决于操作系统(大多数情况下,这些按钮无法被应用捕捉,而是由操作系统首先处理)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-27
        • 2015-08-02
        • 1970-01-01
        相关资源
        最近更新 更多