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

    【欢迎转载】

     转载请表明出处: 乐学习

  • 相关阅读:
    关于分布式事务、两阶段提交协议、三阶提交协议
    关于分布式一致性的探究
    初始分布式系统
    移动端禁止video在ios系统中自动全屏播放
    ios对new Date() 的兼容问题
    VUE路由懒加载的方式
    记录 好看的阴影
    创建码云仓库,并将本地代码上传至仓库
    v-cloak遇到的问题及解决方法
    CSS 定义一条渐变优雅的分割线
  • 原文地址:https://www.cnblogs.com/JLZT1223/p/6221242.html
Copyright © 2011-2022 走看看