MissingMethodException: Method 'Player.OnMove' not found.
System.RuntimeType.InvokeMember (System.String name, System.Reflection.BindingFlags bindingFlags, System.Reflection.Binder binder, System.Object target, System.Object[] providedArgs, System.Reflection.ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, System.String[] namedParams) (at <cbc72d4a9767498db39486e941a498e3>:0)
UnityEngine.SetupCoroutine.InvokeMember (System.Object behaviour, System.String name, System.Object variable) (at <8744f615ca0c450898baad3219003b45>:0)
UnityEngine.Application:InvokeFocusChanged(Boolean)
UnityEditorInternal.InternalEditorUtility:OnGameViewFocus(Boolean)
UnityEditor.HostView:OnLostFocus()
์๋ฌ
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
public class Player : MonoBehaviour
{
ย ย Vector3 moveVector;
ย ย Rigidbody playerRigid;
ย ย private void Awake()
ย ย {
ย ย ย ย playerRigid = GetComponent<Rigidbody>();ย ย ย
ย ย }
ย ย private void Update()
ย ย {
ย ย ย ย playerRigid.AddForce(moveVector);
ย ย }
ย ย void OnMove(InputAction.CallbackContext context)
ย ย {
ย ย ย ย moveVector = context.ReadValue<Vector3>();
ย ย }
}
OnMove๋ฅผ ํธ์ถํ๋ ๋ถ๋ถ ์ฝ๋๋ฅผ ์ฌ๋ ค์ผ์ง
์ธํ์์คํ ์ด ์๋์ผ๋ก ๋ถ๋ฆ
์ ๊ทธ๊ฑฐ๊ตฌ๋ ํน์ public์ด์ด์ผ ํ๋ ใ ใ
์๋๋ฉ์ธ์ง๊ฐ ๋ฐ์ ๋ฉ์ธ์ง๋ฅผ ๊ฐ์ฒด๊ฐ ์ฒ๋ฆฌํ๋๊ฑฐ๋ผ ํผ๋ธ๋ฆญ ์๋์ฌ๋ ๊ฐ๋ฅ ํ๊ฑธ๋ก ์๊ณ ์๊ธด ํ๋ฐ ํน์ ๋ชฐ๋ผ์ ํผ๋ธ๋ฆญ ๋ถ์ฌ์๋ ํด๋ดค๋๋ฐ ์๋
๊ทธ๋ผ ํ๋ผ๋ฏธํฐ๊ฐ ๋ค๋ฅธ ๊ฑฐ ์๋?
๊ทธ๋ผ ๋ฏธ์ฑ๋ฉ์๋ ์์ธ๊ฐ ์๋๋ผ ์๋ชป๋ ํ๋ผ๋ฏธํฐ ์์ธ๊ฐ ๋์ค๋๊ฑฐ์๋?
ํ๋ผ๋ฏธํฐ๊ฐ ๋ค๋ฅด๋ฉด ๋ฉ์๋๋ฅผ ์ธ์ ๋ชปํ ์๋ ์์ง ์์๊น ์ถ์ด์
๋๋ง์ด ๋ง์๋ค ํ๋ผ๋ฏธํฐ๊ฐ ๋ฌ๋ผ์ ๊ทธ๋ฌ์๋๋ฏ
๊ตฟ๊ตฟ
SendMessage ๋ฐฉ์์ผ๋ก ํธ์ถํ ๋๋ ์๋์ฒ๋ผ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฃ์ด์ฃผ์ธ์ค OnMove(InputValue value) ๊ฐ ๊ฐ์ ธ์ฌ๋ value.Get<Vector3>();
์ค ์ด๊ฒ ๋ง๋ค
void OnMove(InputAction.CallbackContext context) ๋ฅผ void OnMove(InputValue value) ํํ๋ก ๋ฐ๊ฟ๋ด ์์ ์ธ์คํํฐ ๋ณด๊ณ ์๋๋ฐ behavior ๊ฐ Send message ๋ฉด OnMove(InputValue value) ๋ฅผ ์จ์ผํ๊ณ OnMove(InputAction.CallbackContext context) ๋ Unity Event ๋ฐฉ์์ ์ธ ๋ ์ฐ๋๊ฑฐ