Unity开发绘画板——02.创建项目

server/2024/9/25 0:07:58/

1.创建Unity工程

我们创建一个名为 DrawingBoard 的工程,然后先把必要的工程目录都创建一下:

主要包含了一下几个文件夹:

Scripts :存放我们的代码文件

Scenes :工程默认会创建的,存放场景文件

Shaders : 存放用到的shader文件

Textures :存放贴图文件,我们会在里面放一些简单的笔刷形状

Resources :资源存放

Materials:存放使用到的材质球

2.框架设计

行动之前,需要想好我们想要一种什么样的交互模式?例如,可以是2D场景鼠标直接在屏幕上画线;可以是一个3D场景,控制一个小球在地面上的绘制。先简单的搞一个2D的吧。

PaintManager.cs 用于管理绘画的各种数据、状态、参数

Painter.cs 用于实现绘画输入

由于要实现撤销和重做的功能,所以这里会用到设计模式中的命令模式,这个到时候细讲

3.拼UI界面

  • 以 MainCamera 作为UI的摄像机,将MainCamera调为Orthographic(正交)模式,将ClearFlags设置为SolidColor,并将背景色调为白色
  • 在Hierarchy面板中创建一个Canvas,并将RenderMode设置为Screen Space - Camera的模式,指定其Camera为 MainCamera
  • 在Canvas下面创建一个RawImage,重命名为 Painter,并铺满整个画布:
  • 在Resources文件夹下创建一张RenderTexture,重命名为PaintRenderTex,设置其分辨率为1920x1080,并将此RenderTexture指定给上面创建的RawImage

    我们后面就是要在这张RenderTexture上作画,指定给RawImage之后就可以实时的在UI界面上显示出来了
  • 创建必要的UI组件,如撤销和重做按钮、笔刷调节滑动条、图片保存按钮、调色盘
  • 创建过程中如果用到了TMP,则会弹出弹窗让我们导入一些TMP必要的资源,导进来即可,TMP默认是不支持中文的,需要额外导入中文字体,TMP本就不是本文重点,有关TMP的使用,读者可自行到网上查阅资料,本文就都以图标代替了
  • 创建完毕,大体长成下面这样,界面大家可以自由发挥,这里贴出UI结构,方便大家看代码的时候比对:
  • 这里只是当前阶段的一个大致展示,里面有些节点如ColorPalette和ButtonGroup都分别采用了 VerticalLayoutGroup 和 HorizontalLayoutGroup 进行布局。
  • ColorPalette 调色盘,下面的众多ColorItem都用了Button控件
  • 界面中使用到的图标来自 iconfont-阿里巴巴矢量图标库,导入到Textures/ui下

在下面的文章我们就开始正式编写代码啦~


http://www.ppmy.cn/server/121565.html

相关文章

【Linux】从内核认识信号

一、阻塞信号 1 .信号的一些其他相关概念 实际执行信号的处理动作称为信号递达(Delivery) 信号从产生到递达之间的状态,称为信号未决(Pending)。 进程可以选择阻塞 (Block )某个信号。 被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作. 注…

【Qt】信号和槽

目录 QT 分析QObject QGuiApplication、QCoreApplication、QApplication 信号和槽概述 信号的本质 槽的本质 信号与槽的使用 连接信号和槽 查看内置信号和槽 自定义信号和槽 语法使用 带参数的信号槽 信号与槽的连接方式 一对一 一对多 多对一 信号槽连接的线程…

[SDX35+WCN6856]SDX35 + WCN6856 WiFi可以up起来之后无法扫描到SSID

SDX35 SDX35介绍 SDX35设备是一种多模调制解调器芯片,支持 4G/5G sub-6 技术。它是一个4nm芯片专为实现卓越的性能和能效而设计。它包括一个 1.9 GHz Cortex-A7 应用处理器。 SDX35主要特性 ■ 3GPP Rel. 17 with 5G Reduced Capability (RedCap) support. Backward compati…

golang Unicode api接口

函数名参数返回值解释Inr rune, ranges …*RangeTableboolrune是否属于其中一个范围的成员。IsrangeTab * RangeTable,r runebool报告符文是否在指定的范围表中。IsControlr runeboolIsControl rune是否为控制字符。C (其他)Unicode 类别包含…

[数据结构]动态顺序表的实现与应用

文章目录 一、引言二、动态顺序表的基本概念三、动态顺序表的实现1、结构体定义2、初始化3、销毁4、扩容5、缩容5、打印6、增删查改 四、分析动态顺序表1、存储方式2、优点3、缺点 五、总结1、练习题2、源代码 一、引言 想象一下,你有一个箱子(静态顺序…

史上最详细泛微Ecology9安装教程及安装包(含注册)

在现代企业中,泛微Ecology9 已成为高效的办公自动化管理系统之一,帮助企业在流程管理、信息协同等方面实现快速发展。本篇文章将为您详细介绍泛微Ecology9的安装过程,并提供最新的安装包下载,包含完整的注册信息,助您快…

商城小程序后端开发实践中出现的问题及其解决方法

前言 商城小程序后端开发中,开发者可能会面临多种问题。以下是一些常见的问题及其解决方法: 一、性能优化 问题:随着用户量的增加和功能的扩展,商城小程序可能会出现响应速度慢、处理效率低的问题。 解决方法: 对数…

yolo介绍

YOLO(You Only Look Once)是一种目标检测算法。 一、主要特点 1. 速度快:YOLO 能够快速处理图像,实现实时目标检测。与其他一些目标检测算法相比,它在处理速度上具有明显优势,可以满足对实时性要求较高的应…