1
\$\begingroup\$

I have this code attached to a 3D cylinder game object. I plan to use it as an arrow and rotate it when clicked and dragged. I had no idea what do as I am a beginner so I started with adding an onClick listener to a Button component on the Cylinder, and wrote this script which I added as component to the cylinder.. But the Rotate() function isn't called when I click on it, as there is no message in the Log.. This is the code:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class MoveAim : MonoBehaviour {

    public bool isAiming;
    private Button button;


    void Start () {
        isAiming = true;
        button = GetComponent <Button>();
        button.onClick.AddListener (Rotate);
        Debug.Log ("Start!");
    }

    void FixedUpdate () {
    }
    void Rotate() {
        Debug.Log ("Click recorded");
    }

}

Any idea what to do? And how should I implement the rotation of the cylinder? Help would be appreciated!

Thanks!

\$\endgroup\$

1 Answer 1

3
\$\begingroup\$

You are using a button, which is an UI element. It is not supposed to be used on 3d objects in the game world.

On 3d objects in game world you probably want to use IPointerClickHandler. They work like this:

using UnityEngine;
using UnityEngine.EventSystems;

public class Clickable : MonoBehaviour, IPointerClickHandler
{
  public void OnPointerClick( PointerEventData eventData )
  {
    Debug.Log ("Click recorded");
  }
}

Also note that the object should have a collider attached to it, and the scene must have EventSystem and Standalone Input Module attached to some object.

There are more events supported to allow different behaviours.

\$\endgroup\$
2
  • \$\begingroup\$ Thanks for the answer, but I just realised that I could use void OnMouseDown() on the object. However, is that not recommended? \$\endgroup\$
    – SinByCos
    Commented Oct 19, 2016 at 15:03
  • \$\begingroup\$ You can use whatever suits your needs. Using EventSystem is usually more flexible and it lets you do more things. \$\endgroup\$
    – Lasse
    Commented Oct 20, 2016 at 5:38

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .