Reputation: 11
I'm making a game and I'm trying to add Gamepad controls. Unity Automatically generates a class for use and its returns 3 but the same errors:
Assets\Scripts\Player2\PlayerControls.cs(78,38): error CS1061: 'InputActionMap' does not contain a definition for 'GetAction' and no accessible extension method 'GetAction' accepting a first argument of type 'InputActionMap' could be found (are you missing a using directive or an assembly reference?)
Generating Class
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.Utilities;
public class Player2ControlsScript : IInputActionCollection
{
private InputActionAsset asset;
public Player2ControlsScript()
{
asset = InputActionAsset.FromJson(@"{
""name"": ""PlayerControls"",
""maps"": [
{
""name"": ""Gameplay"",
""id"": ""bb9a690a-3e84-4125-97d0-abc9eadb168c"",
""actions"": [
{
""name"": ""Jump"",
""id"": ""8e38deca-52f6-4adc-ae48-bf600aca39a1"",
""expectedControlLayout"": """",
""continuous"": false,
""passThrough"": false,
""initialStateCheck"": false,
""processors"": """",
""interactions"": """",
""bindings"": []
},
{
""name"": ""Move"",
""id"": ""3abf2144-1e34-4204-a7d7-7c42eafa79f3"",
""expectedControlLayout"": """",
""continuous"": false,
""passThrough"": false,
""initialStateCheck"": false,
""processors"": """",
""interactions"": """",
""bindings"": []
}
],
""bindings"": [
{
""name"": """",
""id"": ""8947f9d2-2588-4297-a2f1-e7b4b7efa212"",
""path"": ""<Gamepad>/buttonSouth"",
""interactions"": """",
""processors"": """",
""groups"": """",
""action"": ""Jump"",
""isComposite"": false,
""isPartOfComposite"": false,
""modifiers"": """"
},
{
""name"": """",
""id"": ""2d52334c-dbb5-4a14-acce-3a42c0f5208a"",
""path"": ""<Gamepad>/leftStick"",
""interactions"": """",
""processors"": """",
""groups"": """",
""action"": ""Move"",
""isComposite"": false,
""isPartOfComposite"": false,
""modifiers"": """"
}
]
}
],
""controlSchemes"": []
}");
// Gameplay
m_Gameplay = asset.GetActionMap("Gameplay");
m_Gameplay_Jump = m_Gameplay.GetAction("Jump");
m_Gameplay_Move = m_Gameplay.GetAction("Move");
}
~Player2ControlsScript()
{
UnityEngine.Object.Destroy(asset);
}
public InputBinding? bindingMask
{
get => asset.bindingMask;
set => asset.bindingMask = value;
}
public ReadOnlyArray<InputDevice>? devices
{
get => asset.devices;
set => asset.devices = value;
}
public ReadOnlyArray<InputControlScheme> controlSchemes
{
get => asset.controlSchemes;
}
public bool Contains(InputAction action)
{
return asset.Contains(action);
}
public IEnumerator<InputAction> GetEnumerator()
{
return asset.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
public void Enable()
{
asset.Enable();
}
public void Disable()
{
asset.Disable();
}
// Gameplay
private InputActionMap m_Gameplay;
private IGameplayActions m_GameplayActionsCallbackInterface;
private InputAction m_Gameplay_Jump;
private InputAction m_Gameplay_Move;
public struct GameplayActions
{
private Player2ControlsScript m_Wrapper;
public GameplayActions(Player2ControlsScript wrapper) { m_Wrapper = wrapper; }
public InputAction @Jump { get { return m_Wrapper.m_Gameplay_Jump; } }
public InputAction @Move { get { return m_Wrapper.m_Gameplay_Move; } }
public InputActionMap Get() { return m_Wrapper.m_Gameplay; }
public void Enable() { Get().Enable(); }
public void Disable() { Get().Disable(); }
public bool enabled { get { return Get().enabled; } }
public InputActionMap Clone() { return Get().Clone(); }
public static implicit operator InputActionMap(GameplayActions set) { return set.Get(); }
public void SetCallbacks(IGameplayActions instance)
{
if (m_Wrapper.m_GameplayActionsCallbackInterface != null)
{
Jump.started -= m_Wrapper.m_GameplayActionsCallbackInterface.OnJump;
Jump.performed -= m_Wrapper.m_GameplayActionsCallbackInterface.OnJump;
Jump.canceled -= m_Wrapper.m_GameplayActionsCallbackInterface.OnJump;
Move.started -= m_Wrapper.m_GameplayActionsCallbackInterface.OnMove;
Move.performed -= m_Wrapper.m_GameplayActionsCallbackInterface.OnMove;
Move.canceled -= m_Wrapper.m_GameplayActionsCallbackInterface.OnMove;
}
m_Wrapper.m_GameplayActionsCallbackInterface = instance;
if (instance != null)
{
Jump.started += instance.OnJump;
Jump.performed += instance.OnJump;
Jump.canceled += instance.OnJump;
Move.started += instance.OnMove;
Move.performed += instance.OnMove;
Move.canceled += instance.OnMove;
}
}
}
public GameplayActions @Gameplay
{
get
{
return new GameplayActions(this);
}
}
public interface IGameplayActions
{
void OnJump(InputAction.CallbackContext context);
void OnMove(InputAction.CallbackContext context);
}
}
My "Player" Script
using UnityEngine;
using UnityEngine.InputSystem;
public class Player2_Controller: MonoBehaviour {
Vector2 move;
Player2ControlsScript controls;
void Awake () {
controls = new Player2ControlsScript();
controls.Gameplay.Move.performed += ctx => move = ctx.ReadValue<Vector2>();
controls.Gameplay.Move.canceled += ctx => move = Vector2.zero;
}
void OnEnable() {
controls.Gameplay.Enable();
}
void OnDisable() {
controls.Gameplay.Disable();
}
}
Upvotes: 1
Views: 3407
Reputation: 1
just remove all label "#if ENABLE_INPUT_SYSTEM && STARTER_ASSETS_PACKAGES_CHECKED" in generated class, the problem should be solved
Upvotes: 0
Reputation: 11
Okay so i solve this. I don't know what causes this problem but it fixes error. Just Changed Package version to 0.2.10-preview and it works.
Upvotes: 0