点击按钮改变颜色 模型动画暂停继续功能

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;

public class Layer2 : MonoBehaviour
{
public static Layer2 instance;
#region 按钮
[Header(“返回一级界面”)]
public Button back_btn;
[Header(“展开列表”)]
public Button list_btn;
[Header(“关闭列表”)]
public Button close_list_btn;

[Header("播放模型动画")]
public Button model_play_btn;
[Header("暂停模型动画")]
public Button model_stop_btn;

[Header("播放、暂停模型动画按钮父物体")]
public GameObject model_obj_btn;


[Header("主键按钮")]
public List<Button> MKey_btn;
[Header("副键按钮")]
public List<Button> AKey_btn;
[Header("副键数目按钮")]
public List<Button> listbtn_text;
[Header("主键数目按钮")]
public List<Button> listmainbtn_text;
#endregion
#region 物体
[Header("局部按钮")]
public GameObject btns_obj;
[Header("主键数量")]
public GameObject btns_MKey_obj;
[Header("副键数量")]
public GameObject btns_AKey_obj;
[Header("副键数目文本")]
public List<Text> list_text;
[Header("主键数目文本")]
public List<Text> listmain_text;
#endregion
#region 物体
//展开 收起
private int index = 0;
//模型动画播放 暂停
private int index_model = 0;
#endregion
#region 按钮
private int secondbtnIdx1 = 0;
[Header("未选中的颜色副键按钮-灰色")]
/// <summary>
/// 未选中的颜色-灰色
/// </summary>
public Texture2D m_unselected_texture2d;
[Header("选中的颜色副键按钮-亮色")]
/// <summary>
/// 选中的颜色-橙色
/// </summary>
public Texture2D m_selected_texture2d;

//上方数目的按钮的点击数
private int AmountbtnIdx = 0;
//下方数目的按钮的点击数
private int AmountbtnIdx1 = 0;
[Header("未选中的颜色副键按钮-灰色")]
/// <summary>
/// 未选中的颜色-灰色
/// </summary>
public Texture2D m_unselected_Amount_texture2d;
[Header("选中的颜色副键按钮-亮色")]
/// <summary>
/// 选中的颜色-橙色
/// </summary>
public Texture2D m_selected_Amount_texture2d;
#endregion
[Header("对准模型的相机")]
public Camera camera;
[Header("八系统介绍")]
public GameObject table_obj;
[Header("主键介绍")]
public Text text_obj;


[Header("主键介绍")]
public List<GameObject> btns;

private int indexbtn;


[Header("模型父物体")]
public GameObject model_obj;
[Header("模型图片动画")]
public Image img_obj;

[Header("模型动画")]
public List<Animation> anims;

[Header("数目按钮父物体")]
public GameObject numbel_obj;



[Header("模型显示")]
public Button modelshow_btn;

public Animation lastanim;


[Header("高亮模型介绍")]
public Text text_hight;

[Header("系统介绍")]
public GameObject system_obj;
[Header("操作介绍")]
public GameObject action_obj;

[Header("点击副键数目按钮记录")]
public int recort;

[Header("上一个点击下排副键按钮记录")]
public int lastdown;

[Header("图片滑动")]
public ScrollRect scroll;

// Start is called before the first frame update
void Start()
{
    instance = this;
    back_btn.onClick.AddListener(Back_OnClick);
    list_btn.onClick.AddListener(List_OnClick);
    close_list_btn.onClick.AddListener(List_OnClick);

    modelshow_btn.onClick.AddListener(ModelShow_OnClick);

    //模型动画
    model_play_btn.onClick.AddListener(Model_Anim_OnClick);
    model_stop_btn.onClick.AddListener(Model_Anim_OnClick);
    //点击主键按钮监听
    for (int i = 0; i < MKey_btn.Count; i++)
    {
        int a = i;
        MKey_btn[i].onClick.AddListener(delegate () { ChooseMKey_OnClick(a); });
    }
    //点击副键按钮监听
    for (int i = 0; i < AKey_btn.Count; i++)
    {
        int a = i;
        AKey_btn[i].onClick.AddListener(delegate () { ChooseAKey_OnClick(a); });
    }

    //点击主键数目按钮监听
    for (int i = 0; i < listmainbtn_text.Count; i++)
    {
        int a = i;
        listmainbtn_text[i].onClick.AddListener(delegate () { AmountMain_OnClick(a); });
    }
    //点击副键数目按钮监听
    for (int i = 0; i < listbtn_text.Count; i++)
    {
        int a = i;
        listbtn_text[i].onClick.AddListener(delegate () { AmountVice_OnClick(a); });
    }
    model_obj.SetActive(false);
}

//点击主键数目按钮点击效果
private void AmountMain_OnClick(int i)
{
    system_obj.SetActive(true);
    action_obj.SetActive(false);


    table_obj.SetActive(false);
    text_obj.gameObject.SetActive(true);
    //主键介绍
    text_obj.text = "\u3000\u3000" + LoadXml.instance.data_list[i].text;

    if (AmountbtnIdx >= 0)
    {
        ChangeButtonUI1(listmainbtn_text[AmountbtnIdx], m_unselected_Amount_texture2d);
    }
    ChangeButtonUI1(listmainbtn_text[i], m_selected_Amount_texture2d);
    AmountbtnIdx = i;
}
//点击副键数目按钮点击效果
private void AmountVice_OnClick(int i)
{
    modelshow_btn.gameObject.SetActive(false);
    Time.timeScale = 1;
    system_obj.SetActive(true);
    action_obj.SetActive(false);


    if (recort >= 0)
    {
        //ChangeButtonUI1(listbtn_text[AmountbtnIdx], m_unselected_Amount_texture2d);
        ChangeButtonUI1(listbtn_text[recort], m_unselected_Amount_texture2d);
        ChangeButtonUI1(listmainbtn_text[AmountbtnIdx], m_unselected_Amount_texture2d);
    }


    ChangeButtonUI1(listbtn_text[i], m_selected_Amount_texture2d);
    AmountbtnIdx = i;



    StopAllCoroutines();
    StartCoroutine(PlayAnimate(i));

    recort = i;
}

/// <summary>
/// 数目按钮点击后改变颜色
/// </summary>
/// <param name="_btn"></param>
/// <param name="_tex2D"></param>
public void ChangeButtonUI1(Button _btn, Texture2D _tex2D)
{
    _btn.GetComponent<Image>().sprite = Sprite.Create(_tex2D, new Rect(0, 0, _tex2D.width, _tex2D.height), new Vector2(0.5f, 0.5f));
}




private void OnEnable()
{
    for (int i = 0; i < AKey_btn.Count; i++)
    {
        ChangeButtonUI(AKey_btn[i], m_unselected_texture2d);
    }
    index = 0;
    list_btn.gameObject.SetActive(true);
    close_list_btn.gameObject.SetActive(false);
    btns_obj.SetActive(false);
    btns_MKey_obj.SetActive(false);
    btns_AKey_obj.SetActive(false);
    table_obj.SetActive(true);
    text_obj.gameObject.SetActive(false);

}
/// <summary>
/// 点击主键 副键数目显示
/// </summary>
private void ChooseMKey_OnClick(int i)
{
    modelshow_btn.gameObject.SetActive(false);
    table_obj.SetActive(false);
    text_obj.gameObject.SetActive(true);
    //播放模型图片动画
    ModelManager.instance.ModelChange(0);

    //主键介绍
    text_obj.text = "\u3000\u3000" + LoadXml.instance.data_list[i].text;
    ChangeButtonUI(AKey_btn[secondbtnIdx1], m_unselected_texture2d);

    camera.transform.position = new Vector3(0f, 2.8f, 24.5f);
    camera.transform.eulerAngles = new Vector3(0f, 0f, 0f);

    AmountbtnIdx1 = recort;
    ChangeButtonUI1(listbtn_text[AmountbtnIdx1], m_unselected_Amount_texture2d);
    
    if (AmountbtnIdx >= 0)
    {
        ChangeButtonUI1(listmainbtn_text[secondbtnIdx1], m_unselected_Amount_texture2d);
        modelControl.Instance.CloseHighlighter();
    }

    btns_AKey_obj.SetActive(true);
    btns_MKey_obj.SetActive(false);

    for (int j = 0; j < 5; j++)
    {
        list_text[j].text = LoadXml.instance.data_list[i].datas[j].datas.Count.ToString();
    }
    indexbtn = i;
}

/// <summary>
/// 判断主类型下标
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public int GetMianIndex(string name)
{
    switch (name)
    {
        case "锁紧":
            {
                return 0;
            }
        case "润滑":
            {
                return 1;
            }
        case "驱动":
            {
                return 2;
            }
        case "传递":
            {
                return 3;
            }
        case "空压":
            {
                return 4;
            }
        case "电装":
            {
                return 5;
            }
        case "控制":
            {
                return 6;
            }
        case "计装":
            {
                return 7;
            }
        default:
            break;
    }
    return -1;
}
/// <summary>
/// 点击副键 主键数目显示
/// </summary>
private void ChooseAKey_OnClick(int i)
{
    modelshow_btn.gameObject.SetActive(false);
    system_obj.SetActive(true);
    action_obj.SetActive(false);
    Time.timeScale = 1;
    Modulontroller.instance.type1 = -1;
    btns_MKey_obj.SetActive(true);
    btns_AKey_obj.SetActive(false);
    btns[indexbtn].SetActive(false);
    //点击副键时  副键数目的按钮高亮取消
    if (AmountbtnIdx >= 0)
    {
        ChangeButtonUI1(listbtn_text[secondbtnIdx1], m_unselected_Amount_texture2d);
        modelControl.Instance.CloseHighlighter();
        ChangeButtonUI1(listmainbtn_text[AmountbtnIdx], m_unselected_Amount_texture2d);
    }

    for (int j = 0; j < 8; j++)
    {
        listmain_text[j].text = LoadXml.instance.data_list[j].datas[i].datas.Count.ToString();
    }


    if (secondbtnIdx1 >= 0)
    {
        ChangeButtonUI(AKey_btn[secondbtnIdx1], m_unselected_texture2d);
    }
    ChangeButtonUI(AKey_btn[i], m_selected_texture2d);
    secondbtnIdx1 = i;
    StopAllCoroutines();
    StartCoroutine(PlayAnimate(i));
    lastdown = i;
}

IEnumerator PlayAnimate(int i)
{
    index_model = 1;
    Model_Anim_OnClick();
    model_obj_btn.SetActive(false);
    camera.transform.position = new Vector3(0f, 2.8f, 24.5f);
    camera.transform.eulerAngles = new Vector3(0f, 0f, 0f);
    
    ModelManager.instance.ModelChange(0);
    ModelManager.instance.models[0].GetComponent<ModelSet>().RecoverObj();
    //点击下面按钮时 大模型里面 小模型块高亮
    if(lastdown >= 0)
    {
        //副键按钮
        modelControl.Instance.CloseHigh(ModelManager.instance.modelshows[lastdown]);
    }
    if (recort >= 0)
    {
        //副键数目按钮
        modelControl.Instance.CloseHigh(ModelManager.instance.modelshows[recort]);
    }
    //Debug.Log("============show============" + i);
    modelControl.Instance.SetHighlighter(ModelManager.instance.modelshows[i]);
    yield return new WaitForSeconds(2);
    //点击下面按钮时 大模型里面 小模型块高亮取消
    modelControl.Instance.CloseHigh(ModelManager.instance.modelshows[i]);
    if (lastanim != null)
    {
        lastanim.Stop();
        if (lastanim.GetComponent<ModelSet>() != null)
            lastanim.GetComponent<ModelSet>().RecoverObj();
    }
    camera.transform.DOKill();

    Inspection.Instance.RecoverHideObjs();
    yield return new WaitForEndOfFrame();
    if (i == 0)
    {
        camera.transform.DOMove(new Vector3(0.16f, 1.9f, 29.6f), 2);
        camera.transform.DOLocalRotate(new Vector3(0f, 0f, 0), 2);
    }
    else if (i == 1)
    {
        camera.transform.DOMove(new Vector3(0.135f, 2.68f, 27.5f), 2);
        camera.transform.DOLocalRotate(new Vector3(0f, 0f, 0), 2);
    }
    else if (i == 2)
    {
        camera.transform.DOMove(new Vector3(0.54f, 2.82f, 26.26f), 2);
        camera.transform.DOLocalRotate(new Vector3(0f, 0f, 0), 2);
    }
    else if (i == 3)
    {
        camera.transform.DOMove(new Vector3(-0.54f, 3.44f, 27.6f), 2);
        camera.transform.DOLocalRotate(new Vector3(0f, 0f, 0), 2);
    }
    else if (i == 4)
    {
        camera.transform.DOMove(new Vector3(0.13f, 3.35f, 25.72f), 2);
        camera.transform.DOLocalRotate(new Vector3(0f, 0f, 0), 2);
    }
    yield return new WaitForSeconds(2);

    ModelManager.instance.ModelChange(i + 1);
    model_obj_btn.SetActive(true);
    anims[i].Rewind();
    anims[i].Play();
    lastanim = anims[i];
}

//模型闪烁发亮
IEnumerator LoadHigh(int i)
{
    modelControl.Instance.SetHighlighter(ModelManager.instance.models[i]);
    yield return new WaitForSeconds(2);
}
IEnumerator Load()
{
    
    ModelManager.instance.ModelChange(0);
    Layer2.instance.camera.transform.position = new Vector3(0f, 2.8f, 24.5f);
    Layer2.instance.camera.transform.eulerAngles = new Vector3(0f, 0f, 0f);
    yield return new WaitForSeconds(2);
}
IEnumerator LoadModel(int i)
{
    yield return new WaitForSeconds(2);
    ModelManager.instance.ModelChange(i);
}
/// <summary>
/// 下面副键按钮点击后改变颜色
/// </summary>
/// <param name="_btn"></param>
/// <param name="_tex2D"></param>
public void ChangeButtonUI(Button _btn, Texture2D _tex2D)
{
    _btn.GetComponent<Image>().sprite = Sprite.Create(_tex2D, new Rect(0, 0, _tex2D.width, _tex2D.height), new Vector2(0.5f, 0.5f));
}
/// <summary>
/// 返回一级界面
/// </summary>
private void Back_OnClick()
{
    model_obj.SetActive(false);
    UIManager.instance.UIChange(0);
    camera.transform.position = new Vector3(0f, 2.8f, 24.5f);
    camera.transform.eulerAngles = new Vector3(0f, 0f, 0f);
    img_obj.gameObject.SetActive(true);
    ModelManager.instance.ModelChange(0);
    model_obj_btn.SetActive(false);
    modelshow_btn.gameObject.SetActive(false);
    system_obj.SetActive(true);
    action_obj.SetActive(false);
    scroll.content.localPosition = Vector2.zero;
}

/// <summary>
/// 展开列表
/// </summary>
private void List_OnClick()
{
    index++;
    if (index % 2 == 1)
    {
        //展开
        close_list_btn.gameObject.SetActive(true);
        list_btn.gameObject.SetActive(false);
        btns_obj.SetActive(true);
        numbel_obj.SetActive(true);
        model_obj.SetActive(true);
        img_obj.gameObject.SetActive(false);
        camera.transform.position = new Vector3(0f, 2.8f, 24.5f);
        camera.transform.eulerAngles = new Vector3(0f, 0f, 0f);
    }
    else
    {
        //收起
        close_list_btn.gameObject.SetActive(false);
        list_btn.gameObject.SetActive(true);
        btns_obj.SetActive(false);
        numbel_obj.SetActive(false);
        table_obj.SetActive(true);
        text_obj.gameObject.SetActive(false);
        model_obj_btn.SetActive(false);
        modelshow_btn.gameObject.SetActive(false);
    }
}




private void Model_Anim_OnClick()
{
    index_model++;
    if (index_model % 2 == 1)
    {
        //暂停
        model_stop_btn.gameObject.SetActive(false);
        model_play_btn.gameObject.SetActive(true);

        //整个动画被暂停
        //Time.timeScale = 0;

        //if (lastanim != null)
        //{
        //    lastanim.Stop();
        //}

        if (lastanim != null)
        {
            lastanim["Take 001"].speed = 0;
        }


    }
    else
    {
        
        //播放
        model_stop_btn.gameObject.SetActive(true);
        model_play_btn.gameObject.SetActive(false);

        //整个动画继续播放
        //Time.timeScale = 1;

        //if (lastanim != null)
        //{
        //    lastanim.Play();
        //}
        if (lastanim != null)
        {
            lastanim["Take 001"].speed = 1;
        }
    }
}
/// <summary>
/// 每点击一次下两排按钮
/// </summary>
private void Closebtn()
{
    model_stop_btn.gameObject.SetActive(false);
    model_play_btn.gameObject.SetActive(true);
}



/// <summary>
/// 模型显示
/// </summary>
public void ModelShow_OnClick()
{
    Inspection.Instance.RecoverHideObjs();

    //延迟两秒模型显示按钮隐藏
    StartCoroutine(WaitTime());
}

IEnumerator WaitTime()
{
    yield return new WaitForSeconds(2);
    modelshow_btn.gameObject.SetActive(false);
}



// Update is called once per frame
void Update()
{

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值