zoukankan      html  css  js  c++  java
  • 利用Unity制作“表”

    一枚小菜鸟   目前没发现在Unity有其他路径制作类似于c# WinForm中的表;但是利用Unity自带的UGUI,制作了一张“伪表”,具体方案如下:


    效果图如下:


    步骤:

    1、制作一个简单的UI界面,制作一个 button的预制件;

    2、其中的数据来源有WCF服务提供;

    3、代码实现:

    脚本:

    代码:

    using UnityEngine;
    using System.Collections;
    using System.ServiceModel;
    using UnityEngine.UI;
    
    public class showList : MonoBehaviour
    {
        public GameObject infoButton;                                                          //製作好的infobutton预制件
        public GameObject InfoParent;                                                          //信息载体
        private static string EnterStr = "_n_";                                                //自定义换行符
        private static string SpaceStr = "_s_";                                                //自定义空格符                                                                                       
        WriteSaveClient client;
        void Awake()
        {
            client = new WriteSaveClient(new BasicHttpBinding(), new EndpointAddress(" http://localhost:8733/Design_Time_Addresses/STL_WCF/WriteSave/"));
        }
        void Start ()
        {
            ShowinfoList();//显示文件信息
        }
        #region 显示文件信息
        void ShowinfoList()                                                                                    //显示文件信息函数
        {   string 序号,用户,文件;
            string[] rowinfo = string_handle();
            for (int i=0;i< rowinfo.Length;i++)
            {  
                GameObject infolist = Instantiate(infoButton);                                                 //实例化infobutton预制件
                infolist.GetComponent<RectTransform>().SetParent(InfoParent.GetComponent<RectTransform>());    //设置父对象
                infolist.GetComponent<RectTransform>().localScale = Vector3.one;                               //设置大小
                infolist.GetComponent<RectTransform>().localPosition = Vector3.zero;                           //设置位置
                string[] Detailinfo = rowinfo[i].Replace(SpaceStr, "$").Split('$');                            //提取具体信息
                序号 = "  "+Detailinfo[0];
                用户 = Detailinfo[1];
                文件 = Detailinfo[2];
                infolist.transform.FindChild("Count").GetComponent<Text>().text = 序号;                         //显示序号
                infolist.transform.FindChild("userinfo").GetComponent<Text>().text = 用户;                      //显示用户
                infolist.transform.FindChild("fileinfo").GetComponent<Text>().text = 文件;                      //显示文件
                Button LoadBT = infolist.transform.FindChild("load").GetComponent<Button>();                    //下载事件
                LoadBT.onClick.AddListener(
                    delegate()
                    {
                        this.OnLoadClickBT(infolist);
                    }
                    );
            }
            InfoParent.GetComponent<RectTransform>().sizeDelta =                                                 //信息载体的大小要随着信息个数变化而变化
                new Vector2(300, rowinfo.Length * 30+10);
        }
        string[] string_handle()                                                                                 //将包含信息的string第一步处理
        {
            string tempinfo = client.ShowFileList();       
            string[] rowinfo = tempinfo.Replace(EnterStr, "#").Split('#');
            return rowinfo;
        }
        void OnLoadClickBT(GameObject bt)                                                                         //下载按钮的触发事件
        {
    
        }
        #endregion
       
        void Update ()
        {
         
        }
    }

    【欢迎转载】

     转载请表明出处: 乐学习

  • 相关阅读:
    js兼容性——获取当前浏览器窗口的宽高
    pip 换源
    5 二分查找 算法
    顺序查找 冒泡 快排 等
    4 顺序表和链表
    python垃圾回收机制
    3 栈 队列 双头队列
    2 数据结构的性能分析 timeit
    1 时间复杂度
    线程池 爬取一本小说
  • 原文地址:https://www.cnblogs.com/JLZT1223/p/6221242.html
Copyright © 2011-2022 走看看