Как я могу заставить клавишу нажимать комбинацию из двух клавиш Ctrl S?

#c# #unity3d

Вопрос:

 using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SaveGameTest : MonoBehaviour
{
    public SaveLoad saveLoad;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        if(Input.GetKeyDown(KeyCode.LeftControl) amp;amp; Input.GetKeyDown(KeyCode.S))
        {
            saveLoad.SaveWithTime();
        }
    }
}
 

Делая это таким образом, вы просто ничего не делаете.

Использование точки останова на линии :

 saveLoad.SaveWithTime();
 

Это никогда не дойдет до этой строки, если я нажму только Ctrl или только на S, или на обоих одновременно Ctrl S

Мне нужна комбинация Ctrl S для сохранения.

Но я вижу, что Ctrl S занят редактором, когда я нажимаю Ctrl S, я вижу сообщение :

Сообщение

Итак, у меня есть две проблемы :

  1. Как заставить комбинацию клавиш одновременно нажимать вниз?
  2. Какие комбинации клавиш могут быть логичными для сохранения, если Ctrl S уже используется редактором ?

Ответ №1:

Маловероятно, что вы нажмете обе кнопки в одном и том же кадре. Видеть Input.GetKeyDown

Возвращает значение true во время кадра, когда пользователь начинает нажимать клавишу, определенную параметром перечисления key keyCode.

Вместо того, чтобы отслеживать непрерывное нажатие для первого, используя Input.GetKey

Возвращает значение true, пока пользователь удерживает клавишу, определенную параметром перечисления key keyCode.

 if(Input.GetKey(KeyCode.LeftControl) amp;amp; Input.GetKeyDown(KeyCode.S))
 

Если Unity вообще не разрешает CTRL S, вы можете подделать его, используя компиляцию, зависящую от платформы, например,

 #if UNITY_EDITOR
    if(Input.GetKey(KeyCode.LeftAlt) amp;amp; Input.GetKey(KeyCode.LeftControl) amp;amp; Input.GetKeyDown(KeyCode.S))
#else
    if(Input.GetKey(KeyCode.LeftControl) amp;amp; Input.GetKeyDown(KeyCode.S))
#endif
 

Так что только для редактора это CTRL ALT S, в то время как позже во встроенном приложении это будет CTRL S