#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, я вижу сообщение :
Итак, у меня есть две проблемы :
- Как заставить комбинацию клавиш одновременно нажимать вниз?
- Какие комбинации клавиш могут быть логичными для сохранения, если 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