Unity使用LineRender实现绘画功能

本文实例为大家分享了Unity LineRender实现绘画功能的具体代码,供大家参考,具体内容如下

老规矩,直接上代码:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DrawLine_ZH : MonoBehaviour
{
 private GameObject _Clone;
 private LineRenderer _Line;
 int _Number;

 //带有LineRender物体
 [Header("LineRender预制体")]
 public GameObject _Target;

 void Update()
 {
  if (Input.GetMouseButtonDown(0))
  {
   //实例化对象
   _Clone = Instantiate(_Target, _Target.transform.position, Quaternion.identity);

   //获得该物体上的LineRender组件
   _Line = _Clone.GetComponent<LineRenderer>();

   //设置起始和结束的颜色
   //_Line.SetColors(Color.red, Color.blue);
   _Line.startColor = Color.red;
   _Line.endColor = Color.blue;

   //设置起始和结束的宽度
   // _Line.SetWidth(0.2f, 0.1f);
   _Line.startWidth = 0.2f; ;
   _Line.endWidth = 0.1f;

   //计数
   _Number = 0;
  }
  if (Input.GetMouseButton(0))
  {
   //每一帧检测,按下鼠标的时间越长,计数越多
   _Number++;

   //设置顶点数
   //_Line.SetVertexCount(_Number);
   _Line.positionCount = _Number;

   //设置顶点位置(顶点的索引,将鼠标点击的屏幕坐标转换为世界坐标)
   _Line.SetPosition(_Number - 1, Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 15)));

  }

  //清除绘画

  if (Input.GetMouseButtonDown(1))
  {
   GameObject[] _Draw = GameObject.FindGameObjectsWithTag("DarwLine");
   for (int i = 0; i < _Draw.Length; i++)
   {
    Destroy(_Draw[i]);
   }
  }

 }
}

注意添加 预制体 和 材质球:

脚本要搭载:

预制体(可自定义):

预制体材质(可自定义):

最终效果:

暂时先这样吧

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Unity3D绘制地形的实现方法

    项目中肯定会遇到需要用户自己绘制地形的需求,然后根据地形自动生成房间.下面说说我在绘制地形的实现方法. 我们百度可以看到很多关于自己创建mesh的博客,mesh的生成需要三角面顶点坐标以及顶点序列.所以,想要创建我们想要的mesh,首先要获取到绘制mesh的顶点.我们用户在绘制自己想创建的地形时会有很大的自由性.他是随心所欲想怎么画就怎么画.这也造就了很大的错误风险性,要求程序更加智能.好了,下面说下我们给自己程序设定的一些规则. 首先我们设置在绘制的时候摄像头的forward朝向Y轴向上,即我

  • Unity使用LineRender断笔写字

    做多媒体项目时,经常会最后来个客户签名并保存之类的,签名保存之前的博客Unity3d截图方法合集有介绍过了,今天闲着把断笔写字的也贴出来吧,以前用leap motion时尝试用 leap motion演示中的食指写字,当时的写字其实只能一笔画,说白了其实就是个寿命无限长的拖尾,虽然效果不太好,但是很流畅,尝试过用leap motion断笔写字,但是效果不好,很容易误写,然后就产生了此方法,就是鼠标或者触摸屏写字了. 讲一下思路,就是不断的将鼠标的屏幕坐标转换成世界坐标,然后用LineRender

  • Unity绘制二维动态曲线

    一.前言 之前用Line Render实现过这个动态曲线的绘制,使用这个实在太不方便了,一直寻思怎么在一张图片上通过控制图片的像素值实现曲线的动态绘制.参考了Unity的官网教程实现了这个,效果图如图所示: 这样实现的效果比LineRender 要好,并且不怎么消耗计算和渲染 二.实现 1.代码创建一个背景贴图,并将这个贴图给UGUI的RawImage控件 //创建背景贴图 widthPixels = (int)(Screen.width * width); heightPixels = (in

  • Unity Shader实现图形绘制(蓝天白云大海)

    Unity Shader学习:2D图形绘制(蓝天白云大海),供大家参考,具体内容如下 基本是一些数学上的算法 shader部分: Shader "Unlit/2D-Ocean" { Properties { _MainTex ("Texture", 2D) = "white" {} _SunColor("SunColor",Color) = (1,1,1,1) _SunRoundColor("SunRoundColo

  • Unity使用LineRender实现绘画功能

    本文实例为大家分享了Unity LineRender实现绘画功能的具体代码,供大家参考,具体内容如下 老规矩,直接上代码: using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class DrawLine_ZH : MonoBehaviour { private GameObject _Clone; private LineRenderer _Lin

  • unity实现绘画功能

    本文实例为大家分享了unity实现绘画功能的具体代码,供大家参考,具体内容如下 直接先上效果: gif里面有些颜色不一样是gif功能导致的,绘制出来的都是同一个颜色. 原理其实也简单,通过一些列的坐标转换得到当前绘制的坐标,然后根据画笔的宽度计算像素数量,最后填充像素块颜色. 备注: 纹理必须在导入设置中设置了 Is Readable 标志 Texture2D.SetPixels :设置像素颜色块. Texture2D.Apply :实际应用任何先前的 SetPixels 更改. 直接上代码吧:

  • unity实现翻页按钮功能

    本文实例为大家分享了unity实现翻页按钮功能的具体代码,供大家参考,具体内容如下 效果图: UI子父级关系: 代码中也都有加入注释,有不懂可私信我.脚本中用到了对象池,我没有上传,可根据自己需求做相应变动. 脚本:PageBtnPanelC using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using UnityEngine.UI; /

  • Unity实现OCR文字识别功能

    首先登陆百度开发者中心,搜索文字识别服务: 创建一个应用,获取AppID.APIKey.SecretKey秘钥信息: 下载C# SDK,将AipSdk.dll动态库导入Unity: 本文以通用文字识别为例,查阅官方文档,以下是通用文字识别的返回数据结构: 在Unity中定义相应的数据结构: using System; /// <summary> /// 通用文字识别 /// </summary> [Serializable] public class GeneralOcr { //

  • Unity实现简易日志输出功能

    在使用Unity中的Debug.Log()进行日志输出时很不方便,在打包出来的可执行文件中没有办法看到输出,所有就想自己实现一个简易的日志输出功能,可以输出到日志文件,因为能力实在是不够,所以有错误和不合理的地方,还请各位老师指点一下,谢谢啦 1.日志记录器接口 public interface ILogger { void Log(string condition, string stackTrace, UnityEngine.LogType type); } 2.日志文件记录器 using

  • unity自定义弹出框功能

    本文实例为大家分享了unity自定义弹出框的具体方法,供大家参考,具体内容如下 一.弹出框的搭建 布局如图:Message为整个父物体,并且添加UiMessage代码.panel为遮罩. MessageBox为整个提示框,Panel为标题,ok为确定按钮,cancel为取消按钮,retry为重试按钮,Text为提示框的文字. 注意大小写,后面代码会根据名称进行获取对应组建. 效果如下: 二.MessageBox代码 要说明的都在代码中注释了.仿照Windows的提示框功能,如果功能不足可自行添加

  • Unity实现ScrollView滑动吸附功能

    本文实例为大家分享了Unity实现ScrollView滑动吸附的具体代码,供大家参考,具体内容如下 最近在做一个展示模块的时候遇到了一个需要实现滑动窗口并且能固定吸附距离的需求,借助UGUI的ScrollView的API以及Dotween实现了这个功能.主要核心逻辑就是检测Content节点的RectTransform的localPosX的移动距离然后继承实现OnDrag几个接口来完成拖动再松开自动吸附到具体的位置.具体效果如下 另外说一下有几个ScrollView自带的API需要设置一下,一个

  • Unity实现毫秒延时回调功能

    简介 在项目的框架中看到了这个延迟回调的函数,一直以为是通过Unity协程实现的,最后看了源码后才发现是自己实现的.也是,如果用了协程成千上百个回调不得卡死.自己实现了一下核心的脚本,但是他的精华在于数据结构,把每个回调任务都做了很好的处理. API 1: Time.deltaTime 实际上就是每帧所执行的时间 功能实现 简单的说一下功能的实现,下面会直接贴出源码. 每一个新增的任务(回调)都会记录创建任务的时间以及延迟的时间,以及自己的事件回调.通过每帧判断当前帧的时间是否大于创建的(任务的

  • Unity使用LineRender实现签名效果

    本文为大家分享了Unity制作签名功能的具体代码,供大家参考,具体内容如下 前言:项目中需要做一个签名的功能,同时需要两个两个屏幕进行显示,但是都是在UI上,从网上查了大量资料. 找到两种方法: 1.修改图片像素点  但是是马赛克效果,不满足需求 2.使用LineRenderer 的3D签名制作出2D效果 改像素点: 先上代码 using System.Collections; using System.Collections.Generic; using UnityEngine; using

随机推荐