unity3d表格模拟绘制

本文介绍了一种在Unity3D中使用TextField组件模拟表格绘制的方法。通过定义表格的行列数并初始化数组存放表格数据,实现了表格内容的动态获取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前段时间收到网友来信,该网友希望能够在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()方法就可以实现动态地获取表格某单元格的内容了。

实例具体的代码如下:


  1. #pragma strict
  2. // 创建一个数组用于存放表格内容
  3. var list = new Array();
  4. // 设置表格的行列数
  5. private var rows:int    = 5;
  6. private var columns:int = 5;
  7. function Start ()
  8. {
  9. // 计算数组长度
  10. var total = rows * columns;

  11. // 初始化数组
  12. for(var r:int = 0; r < total; r++)
  13. {
  14.   // 初始化单元格的值
  15.   list.push("0");
  16. }
  17. }
  18. function Update ()
  19. {
  20. // 当按下数字键1时输出指定单元格的内容
  21. if(Input.GetKey(KeyCode.Alpha1))
  22. {
  23.   getValue(2, 3);
  24. }
  25. }
  26. function OnGUI()
  27. {
  28. var tx:int = 10;    // 初始偏移量
  29. var ty:int = 10;
  30. var width:int  = 500;   // 表格宽度
  31. var height:int = 100;   // 表格高度

  32. var tw:int = width / rows;  // 单元格宽度
  33. var th:int = height / columns; // 单元格高度

  34. var dx:int = 0;     // 单元格偏移量
  35. var dy:int = 0;

  36. for(var j:int = 0; j < rows; j++)
  37. {
  38.   dy = ty + (j * th);
  39.   
  40.   for(var t:int = 0; t < columns; t++)
  41.   {
  42.    dx = tx + (t * tw);
  43.    
  44.    // 计算当前索引
  45.    var index:int = columns * j + t;
  46.   
  47.    // 绘制单元格
  48.    list[index] = GUI.TextField(Rect(dx, dy, tw, th), list[index]);
  49.   }
  50.   
  51.   dx = tx;
  52. }
  53. }
  54. // 根据索引获取表格中的信息
  55. function getValue(row:int, column:int)
  56. {
  57. var index:int = columns * column + row;
  58. // 现实单元格中的信息
  59. print(list[index]);
  60. }

本文来自:http://bbs.9ria.com/thread-134400-1-1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值