Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Unity中使用sprite作为按钮_C#_Android_Unity3d - Fatal编程技术网

C# 在Unity中使用sprite作为按钮

C# 在Unity中使用sprite作为按钮,c#,android,unity3d,C#,Android,Unity3d,我正在用为Android开发的C#在Unity中制作一个游戏。我正在使用Unity Remote 4进行测试。我只是想知道一个精灵是否可以在Unity中用作按钮,而不是在Component->UI->button中制作的按钮 我试过这个: private void Update() { if (Input.touchCount > 0) Application.LoadLevel("startScene"); } 这确实有效。该按钮用于从主菜单切换到选项菜

我正在用为Android开发的C#在Unity中制作一个游戏。我正在使用Unity Remote 4进行测试。我只是想知道一个精灵是否可以在Unity中用作按钮,而不是在Component->UI->button中制作的按钮

我试过这个:

private void Update() 
{
     if (Input.touchCount > 0) 
         Application.LoadLevel("startScene");
}
这确实有效。该按钮用于从主菜单切换到选项菜单

理想情况下,我希望按钮位于选项菜单中用于返回主菜单的相同位置。问题是,因为场景会立即切换,所以场景会一次又一次地在彼此之间切换,我猜是因为下一个场景也会获得触摸输入


如何延迟场景切换之间的时间,或者是否有更好的方法将精灵用作按钮???

您可以创建一个在场景中持久的菜单系统。查看指南

按钮通常在执行轻触后执行其功能。点击是按下并释放按钮。您所做的是在按住手指的同时,在按下按钮的同时不断触发按钮,从而执行您的功能

伪代码: 如果手指按在雪碧上 如果在精灵上释放同一个手指
按钮已按下。

您可以使用光线投射来检测精灵上的触摸

private void Update()
{
    if (Input.touchCount != 1) return;

    var wp = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position);
    var touchPos = new Vector2(wp.x, wp.y);

    if (collider2D == Physics2D.OverlapPoint(touchPos))
    {
        // Your code
    }
}

这是一种对我有效的方法:

  • 将用作按钮背景的精灵添加到舞台
  • 添加一个碰撞器并将其标记为触发器
  • 指定一个脚本,根据具体情况添加以下任何函数
  • private void OnMouseDown () {
         // Runs by pressing the button
    }
    
    
    private void OnMouseUp () {
         // Runs when button is released
    }