利用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 ()
    {
     
    }
}

【欢迎转载】

 转载请表明出处: 乐学习

 

posted on 2016-12-26 09:26  乐学习  阅读(1887)  评论(0编辑  收藏  举报

导航