나는 단결로 시작 했으므로 지식 부족을 용납하시기 바랍니다. 나는 마이크로 소프트의 xna 환경으로 프로그래밍하기 시작했다. 나는 이제 단결로 전환했지만 어려움을 겪고 있습니다. Xna에는 눌려진 버튼/키를 확인하는 "KeyboardState"기능이있었습니다. 유니티에는 동일한 기능이 없으므로 지난 15 개 프레임에 대해 입력을 저장/캐시 할 수있는 방법이 궁금합니다. Event.KeyboardEvent 및 KeyCode가 도움이 될지도 모르지만 길을 잃었습니다. 아무도 도와 줄 수 있니 ???Unity C# : 캐싱 키보드/컨트롤러 상태?
3
A
답변
1
15 프레임의 입력을 저장하거나 캐시하고 싶습니까? 입력을 수집하는 방법을 알려주고, 글로벌 Keycode[]
배열에 저장하여 원하는 경우 입력을 캐시 할 수 있습니다.
이 코드는 눌려진 키를 콘솔에 인쇄합니다.
void OnGUI() {
Event e = Event.current;
if (e.isKey){
string key = e.keyCode.ToString();
Debug.Log(key);
}
}
0
당신은 모든 가능한 키 코드를 반복하고 향후 사용을 위해 자신의 값을 저장할 수 있습니다
using UnityEngine;
using System.Collections.Generic;
public class KeyboardState : MonoBehaviour {
/// <summary>
/// Keyboard input history, lower indexes are newer
/// </summary>
public List<HashSet<KeyCode>> history=new List<HashSet<KeyCode>>();
/// <summary>
/// How much history to keep?
/// history.Count will be max. this value
/// </summary>
[Range(1,1000)]
public int historyLengthInFrames=10;
void Update() {
var keysThisFrame=new HashSet<KeyCode>();
if(Input.anyKeyDown)
foreach(KeyCode kc in System.Enum.GetValues(typeof(KeyCode)))
if(Input.GetKey(kc))
keysThisFrame.Add(kc);
history.Insert(0, keysThisFrame);
int count=history.Count-historyLengthInFrames;
if(count > 0)
history.RemoveRange(historyLengthInFrames, count);
}
/// <summary>
/// For debug Purposes
/// </summary>
void OnGUI() {
for(int ago=history.Count-1; ago >= 0; ago--) {
var s=string.Format("{0:0000}:", ago);
foreach(var k in history[ago])
s+="\t"+k;
GUILayout.Label(s);
}
}
}
관련 문제
- 1. Unity Javascript - Mecanim 애니메이터 상태
- 2. IE11 캐싱 차단 상태 페이지
- 3. firefox 페이지 상태 캐싱 방지
- 4. Unity/C# Savegame Migration
- 5. Unity C# Time.deltaTime 버그
- 6. Unity Doublejump in C#
- 7. Unity C# textrue를로드하십시오.
- 8. C# Unity 게임 테스트
- 9. C#/Unity 카메라 회전
- 10. C/C++ : 카메라 데이터 캐싱
- 11. AppFabric 캐싱 세션 상태 : 카운트 세션
- 12. ASP.NET MVC2 HTTP304 브라우저 캐싱 상태 코드
- 13. 무 상태 세션 빈 결과 캐싱?
- 14. 인라인 C & VCL 캐싱
- 15. 캐싱 값 유형 C#
- 16. 대리자를 사용한 C# 캐싱
- 17. C# (ASP.NET)에서 캐싱
- 18. Unity Script의 C# Null 참조 예외
- 19. C# Unity - InputField를 지우려면 어떻게해야합니까?
- 20. Unity C# 예외가없는 JSON 라이브러리
- 21. Unity C# 배열 - 복제 방법
- 22. Unity C# - resx vs json
- 23. Unity 3D C# Strings.XML 메서드
- 24. C# Unity InjectionFactory가 작동하지 않습니다.
- 25. C# Unity Factory를 싱글 톤으로해야합니까?
- 26. Unity 인공 지능 이동 C#
- 27. Unity/C# - Input.GetMouseButton이 호출되지 않음
- 28. 재 인증 FB Unity C#
- 29. Unity C# 쉘 스크립트 실행
- 30. Unity C# coroutine이 작동하지 않습니다.