There are so many forum posts about the Unity CrossPlatformInput feature not working after being dragged into a scene. There's also the single touch controller having a habit of moving into the bottom left corner and not coming back .. luckily they're easy to fix!
Making the input .. work.
This is a pain but also useful, the main reason input doesn't work is the lack of an EventSystem in the scene.
To add one of these head to GameObject -> UI -> EventSystem
Now try using your controls.
If you're using the MobileSingleStickControll you might notice that once you start touching the controls the UI image will jump into the bottom left corner, no matter how you set the anchors.
This is due to the script not caching the start position correctly, luckily the fix is simple.
Open up Joystick.cs
void Awake() and replace with
Then load your game again and test. The stick should now bounce back to the centre once you let go.
It's still not working!
Are you sure you've replaced your Input calls to CrossPlatformInputManager and added
using UnityStandardAssets.CrossPlatformInput to your controller script?