前段时间收到网友来信,该网友希望能够在Unity3d中实现表格的绘制并且能够动态地修改与获取表格中的信息。由于前段时间相对较忙,因此该问题一直未能解决,在这里先向该网友致歉,下面我将介绍一种使用TextField组件模拟表格绘制的方法。
更多内容请关注新浪微博@筑梦天下文化科技 http://weibo.com/mongtx
请同时关注团队新微博@筑梦创想 http://weibo.com/mongcc
联系方式:
E-mail: gsh0913@qq.com
QQ:264965161
我将通过一个简单的例程实现表格功能的模拟(运行效果如图所示),在本实例中我将通过使用TextField组件模拟表格的绘制,并使用一个一位数组存放表格中的数据,当然我们同样可以通过这个数组动态地获取到表格中的数据。
在脚本中我们需要先定义表格的行列设置rows和columns,在 Start () 方法中对数组进行初始化,根据表格的行列数初始化数组并设置单元格的初始值。在OnGUI()方法中我们需要实现对表格的绘制,控制单元格绘制位置的逻辑十分简单,详细的大家可以参看代码。
接着,我们需要写一个getValue(row:int, column:int)方法用于更具索引获取表格中的内容,最后在 Update ()方法中调用getValue()方法就可以实现动态地获取表格某单元格的内容了。
实例具体的代码如下:
更多内容请关注新浪微博@筑梦天下文化科技 http://weibo.com/mongtx
请同时关注团队新微博@筑梦创想 http://weibo.com/mongcc
联系方式:
E-mail: gsh0913@qq.com
QQ:264965161
我将通过一个简单的例程实现表格功能的模拟(运行效果如图所示),在本实例中我将通过使用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]);
- }