- 이 Repository는 Unity fps-microgame와 Eggcation-URS의 성능 비교를 위해 만들어 졌습니다.
- 상단의 Unity 교육용 프로젝트에 Unity Render Streaming를 적용했습니다.
- 이에 Input System이 새롭게 교체되어 하단과 같이 수동으로 프로젝트 코드를 바꾸어 주었습니다.
-
Input.GetButtonDown
Input.GetKeyDown
→ButtonControl.wasPressedThisFrame
-
Input.GetButtonUp
Input.GetKeyUp
→ButtonControl.wasReleasedThisFrame
-
Input.GetButton
Input.GetKey
→ButtonControl.isPressed
-
(KeyBoard)
Input.GetAxisRaw
→KeyControl.isPressed
-
(Mouse X)
Input.GetAxisRaw
→Mouse.current.delta.x.ReadUnprocessedValue() / 20
-
(Mouse Y)
Input.GetAxisRaw
→Mouse.current.delta.y.ReadUnprocessedValue() / -20
-
Input.GetButtonDown
Input.GetKeyDown
Input.GetButtonDown(MAPPED_KEY_STRING); // OLD Input.GetKeyDown(KEY_STRING); // OLD ((KeyControl)Keyboard.current[KEY_STRING]).wasPressedThisFrame; // NEW // KeyControl이 ButtonControl을 상속받음 // other examples Keyboard.current.spaceKey.wasPressedThisFrame; // by Keyboard property Keyboard.current[Key.Space].wasPressedThisFrame; // by Key Enum ((KeyControl)Keyboard.current["space"]).wasPressedThisFrame; // by string
- Key가 눌러진 순간 true
- Keyboard properties
- Key Enum : returns integer
-
Input.GetButtonUP
Input.GetKeyUP
Input.GetButtonUp(MAPPED_KEY_STRING); // OLD Input.GetKeyUp(KEY_STRING); // OLD ((KeyControl)Keyboard.current[KEY_STRING]).wasReleasedThisFrame; // NEW
- Key가 떼어질 때 true
-
Input.GetButton
Input.GetKey
Input.GetButton("Fire"); // OLD Input.GetKey(KeyCode.Mouse0); // OLD Mouse.current.leftButton.isPressed; // NEW
- Key가 눌러진 상태면 true
- KeyCode Enum : returns integer
-
Not directly applicable. You can use access any
InputControl<>.ReadUnprocessedValue()
to read unprocessed values from any control. -
위와 같은 식으로 가이드도 1대1 치환을 못하는 경우가 있었다.
-
Input.GetAxisRaw
-
Keyboard 입력의 경우
// Case 1 Input.GetAxisRaw("Vertical") != 0; // OLD Keyboard.current.wKey.isPressed || Keyboard.current.sKey.isPressed; // NEW // Case 2 Input.GetAxisRaw("Horizental"); // OLD getAxisRawKeyboard("Horizental"); // NEW
-
키보드 입력 상에서의
Input.GetAxisRaw
는 WASD 입력에 따라 1.0, 0.0, -1.0을 반환하는 단순한 동작을 한다. -
이에 간단한 조건절 이나, 해당 값들을 반환하는 간단한 함수(
getAxisRawKeyboard
)를 만들어준다. -
getAxisRawKeyboard
protected float getAxisRawKeyboard(string axis){ if(axis == GameConstants.k_AxisNameHorizontal){ return getAxisRawHorizental(); } else if(axis == GameConstants.k_AxisNameVertical){ return getAxisRawVertical(); } else{ return 0.0f; } } protected float getAxisRawHorizental(){ if(Keyboard.current.dKey.isPressed){ return 1.0f; } else if(Keyboard.current.aKey.isPressed){ return -1.0f; } else{ return 0.0f; } } protected float getAxisRawVertical(){ if(Keyboard.current.wKey.isPressed){ return 1.0f; } else if(Keyboard.current.sKey.isPressed){ return -1.0f; } else{ return 0.0f; } }
-
-
Mouse 입력의 경우
float i = Input.GetAxisRaw(MOUSE_AXIS); // OLD float i = 0.0f; // NEW if(MOUSE_AXIS == "Mouse X"){ i = Mouse.current.delta.x.ReadUnprocessedValue() / 20; } else if(MOUSE_AXIS == "Mouse Y"){ i = Mouse.current.delta.y.ReadUnprocessedValue() / -20; } else{ i = 0.0f; }
- MOUSE_AXIS : “Mouse X” 혹은 “Mouse Y”입니다.
- 가이드에 언급된
ReadUnprocessedValue
값과Input.GetAxisRaw
값이 20배 차이가 나는 것을 콘솔 출력으로 확인하여(수직방향의 경우 -20) 대체했습니다.
-
- 웹에서의 동작을 성공적으로 확인
- Eggcation-URS와 비교한 bitrate 값 측정
- 컴퓨터 환경: MacOS 12.5, Chrome 105.0.5195.127
- 네트워크 환경: 외부 네트워크– 47Mbps