如何为Unity应用创建动态侧边栏(菜单)

6

我希望为我的AR Unity应用程序创建一个侧边栏(类似于Android中的导航抽屉),当我触摸屏幕的左边缘并向右拖动时,应该出现一个侧边栏,其中包含一系列按钮,例如(设置、关于我们...)。


我建议将此拆分为两个单独的问题。 - cahen
2个回答

2

我匆忙为您准备了一些东西。这应该可以帮助您入门。

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

public class SlidePanel : MonoBehaviour
{

    //Process touch for panel display on if the touch is less than this threshold.
    private float leftEdge = Screen.width * 0.25f;

    //Minimum swipe distance for showing/hiding the panel.
    float swipeDistance = 10f;


    float startXPos;
    bool processTouch = false;
    bool isExpanded = false;
    public Animation panelAnimation;



    void Update(){
        if(Input.touches.Length>0)
            Panel(Input.GetTouch(0));
    }




    void Panel (Touch touch)
    {
        switch (touch.phase) {
        case TouchPhase.Began:
            //Get the start position of touch.

            startXPos = touch.position.x;
            Debug.Log(startXPos);
            //Check if we need to process this touch for showing panel.
            if (startXPos < leftEdge) {
                processTouch = true;
            }
            break;
        case TouchPhase.Ended:
            if (processTouch) {
                //Determine how far the finger was swiped.
                float deltaX = touch.position.x - startXPos;


                if(isExpanded && deltaX < (-swipeDistance))
                {

                    panelAnimation.CrossFade("SlideOut");
                    isExpanded = false;
                } 
                else if(!isExpanded && deltaX > swipeDistance) 
                {
                    panelAnimation.CrossFade("SlideIn");
                    isExpanded = true;
                }

                startXPos = 0f;
                processTouch = false;
            }
            break;
        default:
            return;
        }
    }
}

当我尝试向脚本检查器添加动画时,它不起作用并保持为空!我该如何解决这个问题? - Ahmad
如何创建传统动画? 我使用了Window->animation来创建动画,但是我无法将其拖放到脚本检查器中。 我不知道我是否使用了正确的方法! - Ahmad
  1. 将动画组件添加到您想要进行动画处理的面板中。2) 点击“窗口”->“动画”以创建动画。如果您没有执行第一步,则Unity将默认创建与Animator兼容而不是Legacy Animation的动画。3) 制作完动画后,将PANEL拖放到脚本检查器中。
- Puneet
更多信息,我强烈建议您查看Unity基础知识,网址为https://unity3d.com/learn/tutorials/modules/beginner/editor/game-objects-and-components?playlist=17090。 - Puneet
让我们在聊天中继续这个讨论 - Ahmad
显示剩余2条评论

0
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ToggleInfo : MonoBehaviour
{

public GameObject panel;
int counter;

public void toggle()
{
    counter++;
    if(counter%2==1)
    {
        panel.gameObject.SetActive(false);
    }
    else
    {
        panel.gameObject.SetActive(true);
    }
  }
}
  1. 确保面板在检视器中的名称为“panel”,并且它最初处于禁用状态

2.将此脚本附加到按钮上,并将您的“panel”拖放到检视器面板中脚本的公共游戏对象中。

3.从按钮的onclick调用toggle函数


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接