Unity3d实现画笔

本文介绍如何在unity3d中实现画笔的功能

首先画笔需要一个材质 Material,之前在网上找了很多画笔,但是都没说材质怎么生成,导致画不出线来。

创建材质:

Material rectMat = new Material("Shader \"Lines/Colored Blended\" {" +  
                      "SubShader { Pass { " +  
                      "    Blend SrcAlpha OneMinusSrcAlpha " +  
                      "    ZWrite Off Cull Off Fog { Mode Off } " +  
                      "    BindChannels {" +  
                      "      Bind \"vertex\", vertex Bind \"color\", color }" +  
                      "} } }");//生成画线的材质  
rectMat.hideFlags = HideFlags.HideAndDontSave;  
rectMat.shader.hideFlags = HideFlags.HideAndDontSave; 

应用材质:

rectMat.SetPass(0); 

通过Opengl 实现画线:

GL.PushMatrix();//保存摄像机变换矩阵  
GL.LoadPixelMatrix();//设置用屏幕坐标绘图  
DrawLines(10,10,100,100,Color.red); 
GL.PopMatrix();//还原

void DrawLines(float px,float py,float px2,float py2,Color cr)  
{
GL.Begin(GL.LINES);  
GL.Color(cr);
GL.Vertex3(px,py, 0);
GL.Vertex3(px2,py2, 0);
GL.End(); 
}

基本过程就这么简单,接下来做一个完整的绘图应用,实现基本的铅笔,直线,画圆,画矩形和输入文字的功能,以及保存文件,打开文件的功能。其中计算直线夹角和判断鼠标是否在线上使用了NN视频聊天组件的功能(免费哦,在Assets\Plugins目录下,聊天功能参考:http://blog.csdn.net/ensue/article/details/47157015)。

界面如图:

程序首先创建一个窗口,在窗口中画线:rcWindow= GUI.Window (1, rcWindow, doMyWindow, "画笔窗口");

所有画笔功能封装在ScriptDraw.cs中(可以修改其中的代码),通过以下接口直接调用:

  1. init(rect) 初始化画笔,指定其工作区域。
  2. onText(x,y,w,h,txt)。添加文字到指定位置。
  3. setCommand(int) 画笔命令 0选择,1画笔,2画直线,4画圆,5画矩形,6输入文字,8删除所选,11全选
  4. vDrawColor(int) 设置颜色
  5. vDrawFont(string) 设置字体名称,由于对unity3d不熟悉,不知道怎么添加有效字体。这个你们自己处理。
  6. vDrawLoadFromFile 从文件打开画笔。
  7. vDrawSaveToFile 保存画笔到文件。
  8. drawDown 鼠标按下。
  9. drawMove 鼠标移动
  10. drawUp  鼠标抬起。

  1. draw()  显示画笔内容。
  2. 代码链接地址:http://t.cn/R4LNcLG
  3. 聊天功能参考:http://blog.csdn.net/ensue/article/details/47157015

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值