Unity 2D - 为什么按钮不起作用?

Unity 2D - Why does button not work?

OP 弄明白了,缺少 EventSystem 对象

我用 Unity 做了一个 运行 游戏。但是我遇到了一个大问题。我做了一个按钮跳转并添加了onclick事件,但是,它不起作用。我的跑步者不会跳到地面上。请帮助我!

按钮和按钮检查器。

跑步检查员。

OnClick 检查器。

这是 Runner 的 C# 脚本:

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

    public class CsRunner : MonoBehaviour
    {
        public Vector2 jumpVelocity;
        public Text _coin;
        int coinCount = 0, heartCount, healthCount = 0, grimReaperCount = 0, coupleCount = 0;
        bool isJump;
        public Button _jump;

        bool collision_box;

        // Use this for initialization
        void Start()
        {
            _jump.onClick.AddListener(Jump);
            heartCount = 3;
        }

        // Update is called once per frame
        void Update()
        {
            _coin.text = ""+coinCount;
        }

        void OnTriggerEnter2D(Collider2D coll)
        {
            if (coll.transform.tag == "Enemy")
            {
                if (heartCount > 1)
                    Destroy(GameObject.Find("heart ("+(heartCount-1)+")"));

                else if (heartCount == 1)
                    Destroy(GameObject.Find("heart"));

                heartCount--;
            }

            if (coll.transform.tag == "HealthBuff")
            {
                Destroy(coll.gameObject);
                healthCount++;
            }

            if (coll.transform.tag == "GrimReaperBuff")
            {
                Destroy(coll.gameObject);
                grimReaperCount++;
            }

            if (coll.transform.tag == "CoupleBuff")
            {
                Destroy(coll.gameObject);
                coupleCount++;
            }

            if (coll.transform.tag == "FieldCoin")
            {
                Destroy(coll.gameObject);
                coinCount++;
            }
        }


        void OnCollisionEnter2D(Collision2D coll)
        {
            if (coll.transform.tag == "Ground")
            {
                GetComponent<Animator>().enabled = true;
                collision_box = true;
                isJump = false;
            }
        }

        void OnCollisionStay2D(Collision2D coll)
        {
            if (coll.transform.tag == "Ground")
            {
                GetComponent<Animator>().enabled = true;
                collision_box = true;
                isJump = false;
            }
        }

        void OnCollisionExit2D(Collision2D coll)
        {
            if (coll.transform.tag == "Ground")
            {
                GetComponent<Animator>().enabled = false;
                collision_box = false;
                isJump = true;
            }
        }

        public void Jump()
        {
            Debug.Log("JUMP!!");

            if (isJump)
            {
                isJump = false;
                transform.GetComponent<Rigidbody2D>().AddForce(jumpVelocity / 2, ForceMode2D.Impulse);
            }

            if (collision_box)
            {
                isJump = true;
                transform.GetComponent<Rigidbody2D>().AddForce(jumpVelocity, ForceMode2D.Impulse);
            }

            else
            {
                GetComponent<Animator>().SetTrigger("Run");
            }
        }
    }

谢谢!

我解决问题了!! Canvas 对象没有 EventSystem!!谢谢大家:)