Unity制作简单3D图表

这篇博客介绍了如何使用Unity3D制作简单的3D图表,包括建立3D坐标系、添加刻度名称、绘制折线以及通过手势或鼠标控制视角。作者通过代码示例展示了如何使用Unity的LineRenderer组件来画线,并提供了控制视角的交互方式。
摘要由CSDN通过智能技术生成

转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持!


开篇废话:


在大学时稍微自学过一段时间Unity3D,虽然现在在做安卓,但一直对游戏开发很感兴趣,所以平时偶尔有空也会稍微看看,不过水平还是未入门菜鸟级的。

下面这个demo是看了雨松MOMO大神所写的几篇基础文章后,写的一个练习demo,用来展示简易的3D图表。

这个Demo非常初级,纯粹是为了练习知识点,但是所应用到的知识点非常基础,非常重要,适合初学者学习。截图如下:


 

 


简介:


这个Demo可以分为4个部分

第一部分——建立3D坐标系:

外框首先由四个平面所围成的一个“3D坐标系”,和X、Y、Z三个“坐标”组成。

1.四个平面

这四个平面所用的就是系统自带的cube,创建并调整cube的大小和方向组成上面的形状。


2.创建坐标系prefab

创建一个预设,并将左平面,右平面和后平面添加到下平面中最后添加到预设里,这样他们就变成了一个整体。如下图所示:



3.调整prefab在世界中的位置和他的scale

由于要设立坐标点,所以需要使刚才建立的坐标系的零点对应世界坐标的零点。

在本例中:假设每个单位长度为1,X坐标需要分成12份(12个月)坐标系scale的x值为24(每两份代表一个刻度)。Y轴代表百分比,分为5份(每份一个刻度)。Z轴同理。


通过上面的3个步骤,3D坐标系的样子已经出来了,下面开始为这个坐标系添加“刻度名称”。



第二部分——为坐标添加刻度名称:

刻度名称使用两个知识点:

1.世界坐标转换为屏幕坐标:

添加刻度名称其实就是将世界坐标的坐标值(因为我们已经在上一步中将坐标系和世界坐标同步了)转换为屏幕坐标值。


2.使用GUI.Label写出坐标名称:

通过刚才算出的屏幕坐标处使用GUI.Label函数写出当前坐标点的名称。


下面是本例中这个方法的代码:

[csharp]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. // isY代表是不是Y轴  
  2. void drawCoordinate (Vector3 point, string name, bool isY) {  
  3.     // 将世界坐标转换为屏幕坐标  
  4.     Vector2 position = camera.WorldToScreenPoint (point);  
  5.     position = new Vector2 (position.x, position.y);  
  6.   
  7.     // 设置刻度的大小和颜色  
  8.     Vector2 nameSize = GUI.skin.label.CalcSize (new GUIContent(name));  
  9.     GUI.color  = Color.yellow;  
  10.     // 根据X,Y轴的不同加上适当偏移量画出刻度  
  11.     if (isY) {  
  12.         GUI.Label(new Rect(position.x-nameSize.x-coordOffset ,Screen.height-position.y,nameSize.x,nameSize.y), name);  
  13.     }  
  14.     else {  
  15.         GUI.Label(new Rect(position.x-nameSize.x ,Screen.height-position.y,nameSize.x,nameSize.y), name);  
  16.     }  
  17. }  
调用方法如下:
[csharp]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. void OnGUI()  
  2. {  
  3.     drawCoordinate (new Vector3 (0 , 0, 0), "0.00%"true);  
  4.     drawCoordinate (new Vector3 (2 , 0, 0), "Jan"false);  
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值