您好,欢迎来到Unity之家!   unity.jb51.net 
  • 首 页
  • 你问我答
  • 当前位置:首页 > 学习培训 > Unity编程 >
    实现表格的模拟绘制
    时间:2015-03-09 08:58 来源:Unity之家 作者:unity.jb51.net 浏览:收藏 挑错 推荐 打印


    通过简单的例程实现表格功能的模拟(运行效果如图所示),在本实例中将通过使用TextField组件模拟表格的绘制,

    并使用一个一位数组存放表格中的数据,当然我们同样可以通过这个数组动态地获取到表格中的数据。

    在脚本中需要先定义表格的行列设置rows和columns,在 Start () 方法中对数组进行初始化,

    根据表格的行列数初始化数组并设置单元格的初始值。在OnGUI()方法中我要实现对表格的绘制,控制单元格绘制位置的逻辑十分简单。

    接着,需要写一个getValue(row:int, column:int)方法用于更具索引获取表格中的内容,

    最后在 Update ()方法中调用getValue()方法就可以实现动态地获取表格某单元格的内容了。


    实现表格的模拟绘制


    #pragma strict
    // 创建一个数组用于存放表格内容
    var list = new Array();
    // 设置表格的行列数
    private var rows:int = 5;
    private var columns:int = 5;
    function Start ()
    {
    // 计算数组长度
    var total = rows * columns;
    // 初始化数组
    for(var r:int = 0; r < total; r++)
    {
    // 初始化单元格的值
    list.push("0");
    }
    }
    function Update ()
    {
    // 当按下数字键1时输出指定单元格的内容
    if(Input.GetKey(KeyCode.Alpha1))
    {
    getValue(2, 3);
    }
    }
    function OnGUI()
    {
    var tx:int = 10; // 初始偏移量
    var ty:int = 10;
    var width:int = 500; // 表格宽度
    var height:int = 100; // 表格高度
    var tw:int = width / rows; // 单元格宽度
    var th:int = height / columns; // 单元格高度
    var dx:int = 0; // 单元格偏移量
    var dy:int = 0;
    for(var j:int = 0; j < rows; j++)
    {
    dy = ty + (j * th);
    for(var t:int = 0; t < columns; t++)
    {
    dx = tx + (t * tw);
    // 计算当前索引
    var index:int = columns * j + t;
    // 绘制单元格
    list[index] = GUI.TextField(Rect(dx, dy, tw, th), list[index]);
    }
    dx = tx;
    }
    }
    // 根据索引获取表格中的信息
    function getValue(row:int, column:int)
    {
    var index:int = columns * column + row;
    // 现实单元格中的信息
    print(list[index]);
    }






    (责任编辑:脚印)
    免责声明:Unity之家部分内容来源于互联网,如有侵权,请联系我们,本站将立即进行处理。