图片加载 预制体加载 视频加载 文字加载

2023-11-05

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using RenderHeads.Media.AVProVideo;
using static RenderHeads.Media.AVProVideo.MediaPlayer;
using DG.Tweening;

public class MainUI : MonoBehaviour
{
///
/// 实例化
///
public static MainUI instance;
///
/// 控制模型的相机
///
[Header(“控制模型的相机”)]
public Camera m_camera;

//模型父物体
public GameObject ModelPage;


#region 一级界面
[Header("桩工机械查询系统首页按钮")]
/// <summary>
/// 桩工机械查询系统首页按钮
/// </summary>
public List<Button> btns_list;
//[Header ("未选中的颜色-白色")]
/// <summary>
/// 未选中的颜色-白色
/// </summary>
//public Texture2D unselected_texture2d;
//[Header("选中的颜色-橙色")]
/// <summary>
/// 选中的颜色-橙色
/// </summary>
//public Texture2D selected_texture2d;
[Header("一级界面")]
/// <summary>
/// 一级界面
/// </summary>
public GameObject FirstPage;
[Header("二级界面")]
/// <summary>
/// 二级界面
/// </summary>
public GameObject SecondPage;


//移动的ui
/// <summary>
/// 左边图片
/// </summary>
[Header ("左边图片")]
public Image left1;
public Image left2;
/// <summary>
/// 左边图片文字
/// </summary>
[Header("右边图片文字")]
public Image right1;
public Text right2;






#endregion 一级界面

#region 二级界面
[Header("二级界面按钮")]
/// <summary>
/// 二级界面按钮
/// </summary>
public List<Button> Secondbtns_list;
[Header("未选中的颜色-灰色")]
/// <summary>
/// 未选中的颜色-灰色
/// </summary>
public Texture2D m_unselected_texture2d;
[Header("选中的颜色-橙色")]
/// <summary>
/// 选中的颜色-橙色
/// </summary>
public Texture2D m_selected_texture2d;


/// <summary>
/// 选中的按钮播放序列帧
/// </summary>
[Header("选中的按钮播放序列帧")]
public Image m_aniage;
#endregion
//需要通过配置的文本或图片
public Text Introduce;
public Text title;
public RawImage Content;
public RawImage Content1;
public RawImage Content2;
public RawImage Content3;

/// <summary>
/// 预制体父对象
/// </summary>
[Tooltip("父对象")]
public GameObject Left;//父对象

[Header("二级界面返回一级界面按钮")]
/// <summary>
/// 二级界面返回一级界面按钮
/// </summary>
public Button SecondBack;
#region 模型
//模型操作
public GameObject model;
public GameObject ModelBtnsPage;
/// <summary>
/// 模型按钮预制体父对象
/// </summary>
[Tooltip("模型按钮预制体父对象")]
public GameObject Prefabparent;
/// <summary>
/// 模型按钮预制体
/// </summary>
[Tooltip("模型按钮预制体")]
public GameObject GoPrefab;



//模型操作按钮
//public List<Button> ModelBtns;
#endregion
#region 
[Header("播放视频界面")]
/// <summary>
/// 播放视频界面
/// </summary>
public GameObject videoPage;

[Header("视频播放器")]
/// <summary>
/// 视频播放器
/// </summary>
public MediaPlayer mediaPlayer;


[Header("视频播放器的滑动条父物体")]
/// <summary>
/// 视频播放器的滑动条父物体
/// </summary>
public GameObject m_progress;



/// <summary>
/// 视频滑动条
/// </summary>
[Header("视频滑动条")]
public Slider _videoSeekSlider;

/// <summary>
/// 视频的时间显示
/// </summary>
[Header("视频的时间显示")]
//public Text time;
float _setVideoSeekSliderValue;




[Header("视频界面 视频返回")]
/// <summary>
/// 视频界面 视频返回
/// </summary>
public Button VideoBack;
[Header("视频界面 视频暂停")]
/// <summary>
/// 视频界面 视频暂停
/// </summary>
public Button VideoStop;
[Header("视频界面 视频播放")]
/// <summary>
/// 视频界面 视频播放
/// </summary>
public Button VideoPlay;

#endregion
/// <summary>
/// 一级界面按钮点击
/// </summary>
//private int btnIdx1 = -1;

private int _last_hit = 0;

/// <summary>
/// 二级界面按钮点击
/// </summary>
private int secondbtnIdx1 = 0;

/// <summary>
/// 视频路径
/// </summary>
private string url1;

private List<GameObject> obj_list = new List<GameObject>();

private Transform modeltransform; 
void Start()
{
    instance = this;


    //一级界面关闭
    FirstPage.SetActive(true);
    //第一个按钮的绑定跳转事件
    //btns_list[0].onClick.AddListener(GoToSecondPage);
    //btns_list[1].onClick.AddListener(GoToSecondPage);
    //一级界面按钮
    for (int i = 0; i < btns_list.Count; i++)
    {
        int a = i;
        btns_list[i].onClick.AddListener(GoToSecondPage);
    }
    //二级界面按钮
    for (int i = 0; i < Secondbtns_list.Count; i++)
    {
        int a = i;
        Secondbtns_list[i].onClick.AddListener(delegate () { OnClick2(a); });
    }
    SecondBack.onClick.AddListener(BackFirstPage);
    //二级界面模型展示按钮监听事件
    Secondbtns_list[0].onClick.AddListener(Abstract);       
    //二级界面模型展示按钮监听事件
    Secondbtns_list[1].onClick.AddListener(ModelShow);
    //二级界面视频播放按钮监听事件
    Secondbtns_list[2].onClick.AddListener(VideoToPage);
    VideoStop.onClick.AddListener(StopVideo);
    //视频播放按钮
    VideoPlay.gameObject.SetActive(false);
    VideoPlay.onClick.AddListener(PlayVideo);

    //视频返回按钮
    VideoBack.onClick.AddListener(BackToSecond);
    ModelBtnsPage.SetActive(false);
    ModelPage.SetActive(false);     
}
#region
//首页UI动画
//public void UiMove()
//{
//    left1.rectTransform.DOLocalMove(new Vector2(-436f, -20.7f), 2.5f);
//    left1.DOFade(1, 2.5f);
//    left2.rectTransform.DOLocalMove(new Vector2(-420f, -38f), 2.5f);
//    left2.DOFade(1, 2.5f);
//    right1.rectTransform.DOLocalMove(new Vector2(-333f, -58f), 3f);
//    right1.DOFade(1, 3f);
//    right2.rectTransform.DOLocalMove(new Vector2(-332f, -62f), 3f);
//    right2.DOFade(1, 3f);
//    //右边按钮
//    btns_list[0].GetComponent<RectTransform>().DOLocalMove(new Vector2(327f, 210f), 0.5f);
//    btns_list[0].GetComponent<Image>().DOFade(1, 0.5f);
//    btns_list[0].transform.Find("Text").GetComponent<Text>().DOFade(1, 0.5f);
//    btns_list[1].GetComponent<RectTransform>().DOLocalMove(new Vector2(327f, 140f), 0.7f);
//    btns_list[1].GetComponent<Image>().DOFade(1, 0.7f);
//    btns_list[1].transform.Find("Text").GetComponent<Text>().DOFade(1, 0.7f);
//    btns_list[2].GetComponent<RectTransform>().DOLocalMove(new Vector2(327f, 65f), 0.9f);
//    btns_list[2].GetComponent<Image>().DOFade(1, 0.9f);
//    btns_list[2].transform.Find("Text").GetComponent<Text>().DOFade(1, 0.9f);
//    btns_list[3].GetComponent<RectTransform>().DOLocalMove(new Vector2(327f, 0f), 1.1f);
//    btns_list[3].GetComponent<Image>().DOFade(1, 1.1f);
//    btns_list[3].transform.Find("Text").GetComponent<Text>().DOFade(1, 1.1f);
//    btns_list[4].GetComponent<RectTransform>().DOLocalMove(new Vector2(327f, -70f), 1.3f);
//    btns_list[4].GetComponent<Image>().DOFade(1, 1.3f);
//    btns_list[4].transform.Find("Text").GetComponent<Text>().DOFade(1, 1.3f);
//    btns_list[5].GetComponent<RectTransform>().DOLocalMove(new Vector2(327f, -143f), 1.6f);
//    btns_list[5].GetComponent<Image>().DOFade(1, 1.6f);
//    btns_list[5].transform.Find("Text").GetComponent<Text>().DOFade(1, 1.6f);
//    btns_list[6].GetComponent<RectTransform>().DOLocalMove(new Vector2(327f, -212f), 1.9f);
//    btns_list[6].GetComponent<Image>().DOFade(1, 1.9f);
//    btns_list[6].transform.Find("Text").GetComponent<Text>().DOFade(1, 1.9f);
//    btns_list[7].GetComponent<RectTransform>().DOLocalMove(new Vector2(327f, -278f), 2.2f);
//    btns_list[7].GetComponent<Image>().DOFade(1, 2.2f);
//    btns_list[7].transform.Find("Text").GetComponent<Text>().DOFade(1, 2.2f);
//}
#endregion

/// <summary>
/// 通过首页菜单按钮加载数据
/// </summary>
/// <param name="goName"></param>
public void Add_data(string mCurType)
{
    
    if (mCurType == "")
    {
        Introduce.gameObject.SetActive(false);
        title.gameObject.SetActive(false);
        Content.gameObject.SetActive(false);
        Content1.gameObject.SetActive(false);
        Content2.gameObject.SetActive(false);
        Content3.gameObject.SetActive(false);
    }
    else
    {
        //Clear();
        Introduce.gameObject.SetActive(true);
        title.gameObject.SetActive(true);
        Content.gameObject.SetActive(true);
        Content1.gameObject.SetActive(true);
        Content2.gameObject.SetActive(true);
        Content3.gameObject.SetActive(true);


        List<HeadImgChildData> list = FileManager.instance.GetDataByName(mCurType);
        //HeadImgChildData list = FileManager.instance.GetDataByNameOne(mCurType);//用 list 存储 GetDataByName 中 tempList 的数据

        for (int i = 0; i < list.Count; i++)
        {
            #region 英文标题                
            Introduce.text = list[i].mIntroduce;
            #endregion
            #region 中文标题                
            title.text = list[i].mTitlt;
            #endregion
            #region 文本介绍图片
            string fileName = list[i].mContent;
            ResourceMgr.instance.LoadImageData(fileName, delegate (Texture2D tex)
            {
                Content.texture = tex;
                Util.SetWidthHeight(Content, 400, 400);//根据长宽自动调整比例,
        });
            #endregion
            #region 介绍图片                
            fileName = list[i].mContent1;
            ResourceMgr.instance.LoadImageData(fileName, delegate (Texture2D tex)
            {
                Content1.texture = tex;
                Util.SetWidthHeight(Content1, 399, 23);//根据长宽自动调整比例,
        });
            #endregion
            #region 介绍图片                
            fileName = list[i].mContent2;
            ResourceMgr.instance.LoadImageData(fileName, delegate (Texture2D tex)
            {
                Content2.texture = tex;
                Util.SetWidthHeight(Content2, 301, 23);//根据长宽自动调整比例,
        });
            #endregion
            #region 介绍图片
            fileName = list[i].mContent3;
            ResourceMgr.instance.LoadImageData(fileName, delegate (Texture2D tex)
            {
                Content3.texture = tex;
                Util.SetWidthHeight(Content3, 494, 91);//根据长宽自动调整比例,
        });
            #endregion
            #region 视频
            url1 = Application.streamingAssetsPath + "/Video/" + list[i].mvideoName + ".mp4";

            #endregion
            #region 模型

            model = (GameObject)Instantiate(Resources.Load("model/" + list[i].mmodelName));

            model.transform.parent = ModelPage.transform;
            modeltransform = model.transform;
            model.transform.position = new Vector3(0, 0, 0);
            //MouseControlModel.instance.obj = model;
            CameraController1.instance.ModelRoot = model.transform;

            CameraController1.instance.targets = new Transform[CameraController1.instance.ModelRoot.childCount];
            for (int j = 0; j < CameraController1.instance.ModelRoot.childCount; j++)
            {
                CameraController1.instance.targets[j] = model.transform.GetChild(j).gameObject.transform;
            }
            CameraController1.instance.curtarget = CameraController1.instance.targets[CameraController1.instance.index];
            
            CameraController1.instance.boardController = CameraController1.instance.ModelRoot.GetComponentInChildren<BoardController>();
            #endregion
            #region 模型按钮
            GameObject go = null;
            string[] pos = list[i].mpointName.Split('|');
            for (int m = 0; m < pos.Length; m++)
            {
                //小于预制体的数量时
                if (m < Prefabparent.transform.childCount)
                {
                    //赋值并显示
                    go = Prefabparent.transform.GetChild(m).gameObject;
                    go.SetActive(true);
                }
                else
                {
                    //重新生成预制体
                    go = Instantiate(GoPrefab, Prefabparent.transform);
                }
                //名称
                go.name = pos[m];
                //名称
                go.GetComponentInChildren<Text>().text = pos[m];

                obj_list.Add(go);


                int a = m;
                go.GetComponent<Button>().onClick.AddListener(delegate ()
                    {
                        CameraController1.instance.ChangeScene(a);
                    });                    
            }
            
            #endregion
            //预制体子对象的数量大于列表数量时,将多出的子物体隐藏
            //if (Prefabparent.transform.childCount > pos.Length)
            //{
            //    for (int k = pos.Length; k < Prefabparent.transform.childCount; k++)
            //    {
            //        Prefabparent.transform.GetChild(k).gameObject.SetActive(false);
            //    }
            //}
            CameraController1.instance.enabled = true;
        }
    }
}


/// <summary>
/// 打开二级界面 关闭一级界面
/// </summary>
private void GoToSecondPage()
{
    model.transform.localScale = new Vector3(2.1f, 2.1f, 2.1f);
    //一级界面关闭
    FirstPage.SetActive(false);
    //二级界面打开
    SecondPage.SetActive(true);
    ModelPage.SetActive(true);
    model.SetActive(true);        
    Left.SetActive(true);
    Abstract();
    ChangeButtonUI(Secondbtns_list[0], m_selected_texture2d);
    UIScale.instance.m_target = CameraController1.instance.curtarget;
    init();
}
//模型复位
void init()
{
    CameraController1.instance.ChangeScene(0); 
    m_camera.transform.position = new Vector3 (0,0,-15);
    m_camera.transform.localEulerAngles = new Vector3(0, 0,0);
    m_camera.transform.localScale = new Vector3(1, 1, 1);
    m_camera.transform.GetComponent<CameraController1>().Init();
}

/// <summary>
/// 关闭二级界面 打开一级界面
/// </summary>
private void BackFirstPage()
{
    obj_list.Clear();
    //一级界面打开
    FirstPage.SetActive(true);
    //二级界面关闭
    SecondPage.SetActive(false);
    GameObject.Destroy(model);
    for (int i = 0; i < obj_list.Count; i++)
    {
        int a = i;
        obj_list[i].GetComponent<Button>().onClick.RemoveListener(delegate () { CameraController1.instance.ChangeScene(a); });

        Destroy(obj_list[i]);
    }
    Info();
}

/// <summary>
/// 二级详细信息界面返回一级首页菜单界面
/// </summary>
public void Info()
{
    //模型相关按钮关闭
    ModelBtnsPage.SetActive(false);
    model.SetActive(false);       
}




/// <summary>
/// 二级界面按钮点击后发生颜色的改变
/// </summary>
/// <param name="_index"></param>
private void OnClick2(int _index)
{
    if (secondbtnIdx1 >= 0)
    {
        ChangeButtonUI(Secondbtns_list[secondbtnIdx1], m_unselected_texture2d);
    }
    ChangeButtonUI(Secondbtns_list[_index], m_selected_texture2d);
    secondbtnIdx1 = _index;
}
/// <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>
public void Abstract()
{        
    init();
    //选中按钮时  按钮身上的动画
    m_aniage.transform.GetComponent<RectTransform>().localPosition = new Vector2(860f, 200f);
    //调用一次序列帧
    m_aniage.GetComponent<SequenceImage>().SetFrame(0);
    m_aniage.GetComponent<SequenceImage>().Play();
    //m_aniage.
    //介绍
    Left.SetActive(true);
    model.transform.position = new Vector3(0, 0, 0);
    model.transform.localEulerAngles = new Vector3(0, 0, 0);
    model.transform.localScale = new Vector3(2.1f, 2.1f, 2.1f);
    //模型界面
    ModelBtnsPage.SetActive(false);
    //模型
    model.SetActive(true);
    //视频界面
    videoPage.SetActive(false);
    _last_hit = 0;
    ChangeButtonUI(Secondbtns_list[1], m_unselected_texture2d);
    ChangeButtonUI(Secondbtns_list[2], m_unselected_texture2d);
}
/// <summary>
/// 模型展示
/// </summary>
public void ModelShow()
{

    init();
    //选中按钮时  按钮身上的动画
    m_aniage.transform.GetComponent<RectTransform>().localPosition = new Vector2(860f, 45f);
    //调用一次序列帧
    //调用一次序列帧
    m_aniage.GetComponent<SequenceImage>().SetFrame(0);
    m_aniage.GetComponent<SequenceImage>().Play();
    //模型界面
    ModelBtnsPage.SetActive(true);
    //简介界面
    Left.SetActive(false);
    //模型
    model.SetActive(true);
    //视频界面
    videoPage.SetActive(false);

    model.transform.DORotate(new Vector3(4.5f, 49.52f, 0f), 2.5f);
    model.transform.DOScale(new Vector3(2f, 2f, 2f), 2.5f);

    _last_hit = 1;

    ChangeButtonUI(Secondbtns_list[0], m_unselected_texture2d);
}



void Update()
{
    if (mediaPlayer && mediaPlayer.Info != null && mediaPlayer.Info.GetDurationMs() > 0f)
    {
        float time = mediaPlayer.Control.GetCurrentTimeMs();
        float d = time / mediaPlayer.Info.GetDurationMs();
        _setVideoSeekSliderValue = d;
        _videoSeekSlider.value = d;
    }
  
    if (Input.GetMouseButtonDown(0))
    {
        //视频进度条显示
        m_progress.SetActive(true);

        //视频滑动条隐藏
        StartCoroutine(HideVideo());
    }
}

#region 视频播放按钮
private  int last_hit;
/// <summary>
/// 视频播放界面  视频按钮界面
/// </summary>
public void VideoToPage()
{
    //选中按钮时  按钮身上的动画
    m_aniage.transform.GetComponent<RectTransform>().localPosition = new Vector2(860f, -115f);
    //视频打开
    Debug.Log("视频路径:" + url1);
    videoPage.SetActive(true);
    //视频加载
    mediaPlayer.OpenVideoFromFile(FileLocation.RelativeToStreamingAssetsFolder, url1, true);
    mediaPlayer.Play();

    //模型界面
    ModelBtnsPage.SetActive(false);
    //简介界面
    Left.SetActive(false);
    //模型
    model.SetActive(false);
    last_hit = _last_hit;       
}
/// <summary>
/// 关闭视频界面
/// </summary>
public void BackToSecond()
{  
    if(last_hit == 0)
    {
        Abstract();
        ChangeButtonUI(Secondbtns_list[last_hit], m_selected_texture2d);            
    }
    if(last_hit == 1)
    {
        ModelShow();
        ChangeButtonUI(Secondbtns_list[last_hit], m_selected_texture2d);
        Debug.Log(_last_hit);
    }
    ChangeButtonUI(Secondbtns_list[2], m_unselected_texture2d);
    videoPage.SetActive(false);
}

/// <summary>
/// 滑动条
/// </summary>
public void OnVideoSeekSlider()
{
    if (mediaPlayer && _videoSeekSlider && _videoSeekSlider.value != _setVideoSeekSliderValue)
    {
        mediaPlayer.Control.Seek(_videoSeekSlider.value * mediaPlayer.Info.GetDurationMs());
    }
}
/// <summary>
/// 视频暂停
/// </summary>
public void StopVideo()
{
    //视频暂停
    mediaPlayer.Stop();
    //视频播放按钮显示
    VideoPlay.gameObject.SetActive(true);
}
/// <summary>
/// 视频播放  
/// </summary>
public void PlayVideo()
{
    mediaPlayer.Play();
    //视频播放按钮隐藏
    VideoPlay.gameObject.SetActive(false);        
}
private int time = 2;
private IEnumerator HideVideo()
{
    time = 2;
    while (time > 0)
    {
        yield return new WaitForSeconds(1);// 每次 自减1,等待 1 秒
        time--;           
    }
    //视频进度条隐藏
    m_progress.SetActive(false);
}
private void ShowVideo()
{
    //视频进度条隐藏
    m_progress.SetActive(true);
}

#endregion
#region 
/// <summary>
/// 按钮点击后发生颜色的改变
/// </summary>
/// <param name="_index"></param>
//private void OnClick1(int _index)
//{
//    if (btnIdx1 >= 0)
//    {
//        ChangeButtonUI(btns_list[btnIdx1], unselected_texture2d, new Color32(80,80,78,255));

//    }

//    ChangeButtonUI(btns_list[_index], selected_texture2d, new Color32(255, 255, 255, 255));
//    btnIdx1 = _index;        
//}
/// <summary>
/// 按钮点击后改变颜色
/// </summary>
/// <param name="_btn"></param>
/// <param name="_tex2D"></param>
//public void ChangeButtonUI(Button _btn, Texture2D _tex2D,Color32 color)
//{
//    _btn.GetComponent<Image>().sprite = Sprite.Create(_tex2D, new Rect(0, 0, _tex2D.width, _tex2D.height),
//            new Vector2(0.5f, 0.5f));
//    _btn.transform.Find("Text").GetComponent<Text>().color = color;
//}
#endregion
#region 
//首页UI动画
//public void UiMove()
//{
//    left1.rectTransform.DOLocalMove(new Vector2(-436f, -20.7f), 2.5f);
//    left1.DOFade(1, 2.5f);
//    left2.rectTransform.DOLocalMove(new Vector2(-420f, -38f), 2.5f);
//    left2.DOFade(1, 2.5f);
//    right1.rectTransform.DOLocalMove(new Vector2(-333f, -58f), 3f);
//    right1.DOFade(1, 3f);
//    right2.rectTransform.DOLocalMove(new Vector2(-332f, -62f), 3f);
//    right2.DOFade(1, 3f);
//    //右边按钮
//    btns_list[0].GetComponent<RectTransform>().DOLocalMove(new Vector2(327f, 210f), 0.5f);
//    btns_list[0].GetComponent<Image>().DOFade(1, 0.5f);
//    btns_list[0].transform.Find("Text").GetComponent<Text>().DOFade(1, 0.5f);
//    btns_list[1].GetComponent<RectTransform>().DOLocalMove(new Vector2(327f, 140f), 0.7f);
//    btns_list[1].GetComponent<Image>().DOFade(1, 0.7f);
//    btns_list[1].transform.Find("Text").GetComponent<Text>().DOFade(1, 0.7f);
//    btns_list[2].GetComponent<RectTransform>().DOLocalMove(new Vector2(327f, 65f), 0.9f);
//    btns_list[2].GetComponent<Image>().DOFade(1, 0.9f);
//    btns_list[2].transform.Find("Text").GetComponent<Text>().DOFade(1, 0.9f);
//    btns_list[3].GetComponent<RectTransform>().DOLocalMove(new Vector2(327f, 0f), 1.1f);
//    btns_list[3].GetComponent<Image>().DOFade(1, 1.1f);
//    btns_list[3].transform.Find("Text").GetComponent<Text>().DOFade(1, 1.1f);
//    btns_list[4].GetComponent<RectTransform>().DOLocalMove(new Vector2(327f, -70f), 1.3f);
//    btns_list[4].GetComponent<Image>().DOFade(1, 1.3f);
//    btns_list[4].transform.Find("Text").GetComponent<Text>().DOFade(1, 1.3f);
//    btns_list[5].GetComponent<RectTransform>().DOLocalMove(new Vector2(327f, -143f), 1.6f);
//    btns_list[5].GetComponent<Image>().DOFade(1, 1.6f);
//    btns_list[5].transform.Find("Text").GetComponent<Text>().DOFade(1, 1.6f);
//    btns_list[6].GetComponent<RectTransform>().DOLocalMove(new Vector2(327f, -212f), 1.9f);
//    btns_list[6].GetComponent<Image>().DOFade(1, 1.9f);
//    btns_list[6].transform.Find("Text").GetComponent<Text>().DOFade(1, 1.9f);
//    btns_list[7].GetComponent<RectTransform>().DOLocalMove(new Vector2(327f, -278f), 2.2f);
//    btns_list[7].GetComponent<Image>().DOFade(1, 2.2f);
//    btns_list[7].transform.Find("Text").GetComponent<Text>().DOFade(1, 2.2f);
//}
//#endregion

/// <summary>
/// 通过首页菜单按钮加载数据
/// </summary>
/// <param name="goName"></param>
//public void Add_data(string mCurType)
//{

//    if (mCurType == "")
//    {
//        Introduce.gameObject.SetActive(false);
//        title.gameObject.SetActive(false);
//        Content.gameObject.SetActive(false);
//        Content1.gameObject.SetActive(false);
//        Content2.gameObject.SetActive(false);
//        Content3.gameObject.SetActive(false);
//    }
//    else
//    {
//        //Clear();
//        Introduce.gameObject.SetActive(true);
//        title.gameObject.SetActive(true);
//        Content.gameObject.SetActive(true);
//        Content1.gameObject.SetActive(true);
//        Content2.gameObject.SetActive(true);
//        Content3.gameObject.SetActive(true);

//        HeadImgChildData list = FileManager.instance.GetDataByNameOne(mCurType);//用 list 存储 GetDataByName 中 tempList 的数据
//        Debug.Log("陈秋月" + list);
//        #region 英文标题                
//        Introduce.text = list.mIntroduce;
//        #endregion
//        #region 中文标题                
//        title.text = list.mTitlt;
//        #endregion
//        #region 文本介绍图片
//        string fileName = list.mContent;
//        ResourceMgr.instance.LoadImageData(fileName, delegate (Texture2D tex)
//        {
//            Content.texture = tex;
//            Util.SetWidthHeight(Content, 400, 400);//根据长宽自动调整比例,
//        });
//        #endregion
//        #region 介绍图片                
//        fileName = list.mContent1;
//        ResourceMgr.instance.LoadImageData(fileName, delegate (Texture2D tex)
//        {
//            Content1.texture = tex;
//            Util.SetWidthHeight(Content1, 399, 23);//根据长宽自动调整比例,
//        });
//        #endregion
//        #region 介绍图片                
//        fileName = list.mContent2;
//        ResourceMgr.instance.LoadImageData(fileName, delegate (Texture2D tex)
//        {
//            Content2.texture = tex;
//            Util.SetWidthHeight(Content2, 301, 23);//根据长宽自动调整比例,
//        });
//        #endregion
//        #region 介绍图片
//        fileName = list.mContent3;
//        ResourceMgr.instance.LoadImageData(fileName, delegate (Texture2D tex)
//        {
//            Content3.texture = tex;
//            Util.SetWidthHeight(Content3, 494, 91);//根据长宽自动调整比例,
//        });
//        #endregion
//        #region 视频
//        url1 = Application.streamingAssetsPath + "/Video/" + list.mvideoName + ".mp4";

//        #endregion
//        #region 模型

//        model = (GameObject)Instantiate(Resources.Load("model/" + list.mvideoName));

//        model.transform.parent = ModelPage.transform;
//        modeltransform = model.transform;
//        model.transform.position = new Vector3(0, 0, 0);

//        CameraController1.instance.ModelRoot = model.transform;

//        CameraController1.instance.targets = new Transform[CameraController1.instance.ModelRoot.childCount];
//        for (int j = 0; j < CameraController1.instance.ModelRoot.childCount; j++)
//        {
//            CameraController1.instance.targets[j] = model.transform.GetChild(j).gameObject.transform;
//        }
//        CameraController1.instance.curtarget = CameraController1.instance.targets[CameraController1.instance.index];
//        CameraController1.instance.boardController = CameraController1.instance.ModelRoot.GetComponentInChildren<BoardController>();
//        #endregion
//        #region 模型按钮
//        GameObject go = null;
//        string[] pos = list.mpointName.Split('|');
//        for (int i = 0; i < pos.Length; i++)
//        {
//            //小于预制体的数量时
//            if (i < Prefabparent.transform.childCount)
//            {
//                //赋值并显示
//                go = Prefabparent.transform.GetChild(i).gameObject;
//                go.SetActive(true);
//            }
//            else
//            {
//                //重新生成预制体
//                go = Instantiate(GoPrefab, Prefabparent.transform);
//            }
//            //名称
//            go.name = pos[i];
//            //名称
//            go.GetComponentInChildren<Text>().text = pos[i];

//            Button gobtn = go.GetComponent<Button>();
//            for (int n = 0; n < Prefabparent.transform.childCount; n++)
//            {
//                int a = n;
//                gobtn.onClick.AddListener(delegate ()
//                {
//                    CameraController1.instance.ChangeScene(a);
//                });
//            }
//        }
#endregion

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图片加载 预制体加载 视频加载 文字加载 的相关文章

  • Taglib:性能和崩溃问题

    我在 Qt 应用程序中使用 taglib 库 1 7 2 从音乐文件夹中读取 mp3 文件的一些元数据 问题是我发现它非常慢 例如 这是代码 QString path C Music QDir d path QStringList file
  • 以 ISO 8601 格式输出日期

    如何在 C 中获取以下格式的日期 2016 04 26T19 50 48Z include
  • 我们可以在 C# 中定义枚举的隐式转换吗?

    是否可以在 C 中定义枚举的隐式转换 可以实现这一目标的东西吗 public enum MyEnum one 1 two 2 MyEnum number MyEnum one long i number 如果没有 为什么不呢 有一个解决方案
  • HTML 文档

    有没有一个工具可以从 VS2010 生成的 XML 文档文件生成 HTML 页面 我在谷歌上搜索了这样的工具 但没有找到 我下载并安装了SandCastle 但我不明白如何使用它 尝试使用Sandcastle 帮助文件生成器 http sh
  • 如何从 std::vector 中删除元素而不调整其大小

    迭代器擦除 迭代器位置 迭代器擦除 首先是迭代器 迭代器最后 擦除元素 从向量中删除 容器可以是单个元素 位置 或一系列元素 第一个 最后一个 这有效地减少了向量 大小除以元素数量 删除 调用每个元素的 之前的析构函数 and remove
  • 在异步方法中使用时 HttpClient 标头被清空

    我正在使用 NET Framework 4 6 1 我的 Web api 中有一个控制器 其中有静态 HttpClient 来处理所有 http 请求 在 IIS 上托管我的应用程序后 大约每月一次 我的应用程序的所有传入请求都会出现以下异
  • 错误 C2065:'cout':未声明的标识符

    我正在处理我的编程作业的 驱动程序 部分 但我不断收到这个荒谬的错误 错误 C2065 cout 未声明的标识符 我什至尝试过使用std cout但我收到另一个错误 IntelliSense 命名空间 std 没有成员 cout 当我宣布u
  • 在 Windows 服务中使用 OleDb 从 Excel 读取数据?

    免责声明 我知道这是一种不好的做事方式 这是我们与客户的唯一选择 Problem 我们需要每隔 x 时间从 Excel 文件读取数据 数据通过第三方 Excel 插件不断变化 应用程序的环境是 Windows XP SP1 和 Net 2
  • 如何在 C++ 中从模板基类的构造函数调用模板超类的构造函数?

    我正在使用 sublimetext3 用 c 进行编程 我的程序有一个名为 Array 的超类和一个名为 IntArray 的子类 这两个类都是模板类 目前 我在编译该程序时遇到问题 它不断在我的 IntArray cpp 文件中给出错误
  • 如何将 QSerialPort 模块添加到 CMake 中?

    我想将 QSerialPort 模块添加到 CMake 中 根据我的理解 我需要将QT 串口添加到 pro中 我只想使用 CMake 所以我尝试编译简单的 CMake 文件 但有错误 QtCore 正在工作 qDebug 可以毫无问题地显示
  • MVVM 同步集合

    是否有一种标准化方法可以将 Model 对象集合与 C 和 WPF 中匹配的 ModelView 对象集合同步 我正在寻找某种类 可以使以下两个集合保持同步 假设我只有几个苹果 并且可以将它们全部保存在内存中 换句话说 我想确保如果我将 A
  • 如果 .txt 文件不存在,则创建一个,如果存在则追加新行

    我想创建一个 txt 文件并写入它 如果该文件已经存在 我只想添加更多行 string path E AppServ Example txt if File Exists path File Create path TextWriter t
  • 如何在 WCF 中反序列化自定义 SOAP 标头?

    我正在尝试向通过 WCF 的所有 SOAP 请求添加自定义标头 我发现这篇精彩的文章 http blogs msdn com b mohamedg archive 2012 10 21 adding custom soap headers
  • argc 和 argv 在 Windows 中没有用吗?

    在 Linux 中 argc 和 argv 计算终端中的参数 但在 Windows 中 我找不到放置第二个参数的地方 事实上 每次我运行该程序时 它都会创建那个丑陋的黑色窗口 我什至没有机会给出任何争论 那么这两个变量在Windows平台下
  • 内存不足异常

    我正在使用 C 和 asp net 开发一个网络应用程序 我一直收到内存不足的异常 该应用程序的作用是从数据源读取一堆记录 产品 可能是数百 数千 通过向导中的设置处理这些记录 然后使用处理的产品信息更新不同的数据源 虽然有多个 DB 类
  • WPF MVVM后台打印数据绑定问题

    我正在使用 wpf mvvm 开发一个销售点应用程序 在交易生命周期的许多阶段 都会在后台打印收据 我已经使用其他示例在后台生成和打印收据 我正在后台打印一个 UserControl 一切看起来都很棒 然后 我为该控件创建了 ViewMod
  • 除法时的小数舍入误差 (C#)

    我基本上有四个数字 比如 100 200 300 400 我需要计算概率为 100 100 200 300 400 200 100 200 300 400 等等在 当我使用小数数据类型来存储这些概率时 由于舍入问题 它们不会达到 1 在不使
  • 合并大文件的最佳方法是什么?

    我必须合并数千个大文件 每个大约 200MB 我想知道合并这些文件的最佳方法是什么 行将有条件地复制到合并文件中 可以使用 File AppendAllLines 或使用 Stream CopyTo 吗 使用 File AppendAllL
  • 矩阵行列式算法 C++

    我是编程新手 我一直在寻找一种找到矩阵行列式的方法 我在网上找到了这段代码 但我很难理解这里的算法 我对递归的基础没有问题 但继续和主循环我很难理解 非常感谢任何可以向我解释该算法的人 int determ int a MAX MAX in
  • Json.net 将数字属性序列化为字符串

    我正在使用 JsonConvert SerializeObject 序列化模型对象 服务器期望所有字段都是字符串 我的模型对象具有数字属性和字符串属性 我无法向模型对象添加属性 有没有办法将所有属性值序列化为字符串 我必须只支持序列化 而不

随机推荐

  • Apollo如何通知/订阅主题topic

    转自 https blog csdn net u012423865 article details 80024870 导读 众所周知 Apollo是基于ROS开发的 所以其底层也是基于消息的机制进行节点通信的 但是它在ROS的基础上做了一些
  • 渗透相关问题(一)

    1 什么是kali kali Linux是基于Debian的Linux发行版 最早是设计用于数字取证的操作系统 被称为BackTrack 基于ubuntu kali集成了精心挑选的渗透测试和安全审计的工具 供渗透测试和安全设计人员使用 也可
  • Qt 实现当某个变量的值发生改变时修改按钮控件的参数

    mywidget h ifndef MYWIDGET H define MYWIDGET H include
  • Edge 浏览器的扩展安装到 Chrome

    在 Edge 浏览器输入 edge version 按回车键后 可以看到 用户配置路径 xxx 路径下的 Extensions 文件夹就是 Edge 安装扩展的目录 找到需要安装到 Chrome 的插件的目录 如 C Users Admin
  • Hibernate缓存以及哪些操作会向缓存中读取和存放数据

    Hibernate缓存 Hibernate有两级缓存 分别是一级缓存和二级缓存 一级缓存也叫Session级缓存 默认情况下就可以用 无需配置 一级缓存生命周期由Session对象决定 Session对象关闭 一级缓存也就消失 二级缓存也叫
  • LeetCode 49. 字母异位词分组

    题目链接 https leetcode cn problems group anagrams 思路如下 输入 strs eat tea tan ate nat bat 对每个字符串进行排序 strs aet aet ant aet ant
  • centos是什么linux操作系统,CentOS系统是什么

    CentOS是基于Linux内核的100 免费的操作系统 多用于服务器系统 CentOS的存在是为了提供一个免费的企业级计算平台 并努力与其上游源Red Hat保持100 的二进制兼容性 CentOS Community enterpris
  • 复杂度应对之道 - COLA应用架构

    前言 从业这么多年 接触过银行的应用 Apple的应用 eBay的应用和现在阿里的应用 虽然分属于不同的公司 使用了不同的架构 但有一个共同点就是都很复杂 导致复杂性的原因有很多 如果从架构的层面看 主要有两点 一个是架构设计过于复杂 层次
  • SpringBoot+Jersey跨域文件上传

    说明 本次所使用的 Spring内置的tomcat端口号为8070 tomcat文件服务器端口号为8060 uni ui的端口号为8080 一 需要的工具 tomcat服务器 作为文件服务器 Spring项目文件 二 创建过程 一 配置To
  • 超平实版Pytorch Self-Attention: 参数详解(尤其是mask)(使用nn.MultiheadAttention)

    目录 Self Attention的结构图 forward输入中的query key value forward的输出 实例化一个nn MultiheadAttention 进行forward操作 关于mask Reference Self
  • redis:redis初识(一)

    1 Redis介绍 Redis是一个将数据存储到内存之中的内存数据库 它主要的作用就是可以快速存取 1 1redis出现的背景 随着互联网 大数据时代的来临 传统的mysql等关系型数据库 数据存储在硬盘之中 已无法满足大型网站日益增长的访
  • 数据资源

    本文综合整理自网站企研 中国学术大数据平台 https r qiyandata com 来源 企研 中国学术大数据平台 公共数据资源 前文回顾 数据资源 八大板块 数据公开下载渠道 上 目录 三农 地理信息 生态环境 碳中和 调查数据 省级
  • 命令行操作数据库

    第一招 mysql服务的启动和停止 net stop mysql net start mysql 第二招 登陆mysql 语法如下 mysql u用户名 p用户密码 键入命令mysql uroot p 回车后提示你输入密码 输入12345
  • 模板特化详解

    模板特化 就是在实例化模板时 对特定类型的实参进行特殊处理 即实例化一个特殊的实例版本 当以特化定义时的形参使用模板时 将调用特化版本 模板特化分为全特化和偏特化 1 函数模板的特化 只能全特化 泛型版本 template
  • MyBatis中的几种查询结果集返回类型映射

    MyBatis中的几种查询结果集返回类型映射 一 MyBatis查询结果类型 MyBatis查询是比较常用的功能操作 对于查询语句来说 它是需要返回查询结果的 不同查询可以返回不同类型的查询结果 例如 查询记录总数 那么就是返回整数类型 查
  • MCC(移动国家码)和 MNC(移动网络码)

    本文转自 MCC 移动国家码 和 MNC 移动网络码 自我的进化http www shanxing top p 164 MCC Mobile Country Code 移动国家码 MCC的资源由国际电联 ITU 统一分配和管理 唯一识别移动
  • 最新ChatGPT网站AI系统源码+详细图文搭建教程/支持GPT4/AI绘画/H5端/Prompt知识库

    一 AI系统 如何搭建部署AI创作ChatGPT系统呢 小编这里写一个详细图文教程吧 SparkAi使用Nestjs和Vue3框架技术 持续集成AI能力到AIGC系统 1 1 程序核心功能 程序已支持ChatGPT3 5 GPT 4提问 A
  • bean依赖注入三种方式

    bean依赖注入的三种方式如下 构造方法注入 set方法注入 P命名空间注入 此处演示的项目结构如下 方法一 构造方法注入 UserDaoImpl java public class UserDaoImpl implements IUser
  • postgreSQL函数糖

    SQL的编写可以直观数据分布 大部分同学用SQL用的都是select xx from join xx on where SQL的优势不在于它的单原子数据处理 当表很多的时候 相似处理的抽象让代码变得简洁 IDE 推荐DataGrip 编译运
  • 图片加载 预制体加载 视频加载 文字加载

    using System Collections using System Collections Generic using UnityEngine using UnityEngine UI using RenderHeads Media