【问题标题】:Using sprite as button in Unity在 Unity 中使用精灵作为按钮
【发布时间】:2015-08-29 11:29:03
【问题描述】:

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

我试过了:

private void Update() 
{
     if (Input.touchCount > 0) 
         Application.LoadLevel("startScene");
}

哪个有效。该按钮用于从主菜单切换到选项菜单。

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

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

【问题讨论】:

    标签: c# android unity3d


    【解决方案1】:

    您可以创建一个在场景中持久存在的菜单系统。看看This Tutorial Video 以获得指导

    【讨论】:

      【解决方案2】:

      通常,一旦执行了点击,按钮就会执行其功能。点击是按下并释放按钮。您正在做的是在按下时执行您的功能,这会导致您的按钮在您按住手指时连续触发。

      伪代码: 如果手指按在精灵上 如果同一根手指在精灵上松开 按钮已按下。

      【讨论】:

        【解决方案3】:

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

        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
            }
        }
        

        【讨论】:

          【解决方案4】:

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

          1. 将您将用作按钮背景的 sprite 添加到舞台。
          2. 添加一个对撞机并将其标记为触发器。
          3. 根据您的情况分配一个脚本,您可以在其中添加以下任何函数
          private void OnMouseDown () {
               // Runs by pressing the button
          }
          
          
          private void OnMouseUp () {
               // Runs when button is released
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-02-01
            • 2016-04-26
            • 1970-01-01
            • 2014-10-27
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多