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

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.mfbz.cn/a/882748.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

加固与脱壳01 - 环境搭建

虚拟机 VMWare 多平台可用,而且可以直接激活,需要先注册一个账号 https://support.broadcom.com/group/ecx/productdownloads?subfamilyVMwareWorkstationPro KALI 类Ubuntu系统,官方提供了 vmware 版本,直接下载就可以使用。…

关于安卓App自动化测试的一些想法

安卓App自动化一般使用PythonAppium。页面元素通常是使用AndroidStudio中的UI Automator Viewer工具来进行页面元素的追踪。但是这里涉及到一个问题就是,安卓apk在每次打包的时候,会进行页面的混淆以及加固,所以导致每次apk打包之后会出现页面…

[Linux]用户管理指令

开机/重启/登录/注销 进入xhsell 或者虚拟系统中, 右键桌面打开终端, 在终端执行命令, 重启或关机linux系统 建议使用普通账号登录, 如果权限不够时, 使用 su - 用户名 命令切换到超管, 然后再使用 logout命令退回到普通账号, logout 不能在图形界面的终端中使用 用户管理 Li…

网络信息传输安全

目录 机密性-加密 对称加密 非对称加密 身份认证 摘要算法和数据完整性 数字签名 签名验签 数字证书 申请数字证书所需信息 数字证书的生成 数字证书的应用 https协议 数字证书的申请 数据在网络中传输过程中,怎么做到 数据没有被篡改?hash算…

基于PHP的新闻管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于phpMySQL的新闻管理系统。…

[js逆向学习] fastmoss电商网站——店铺排名

逆向目标 网站:https://www.fastmoss.com/shop-marketing/tiktok接口:https://www.fastmoss.com/api/shop/shopList/参数:fm-sign 逆向分析 我们今天要分析的是店铺排名,先分析网络请求,找到目标接口 按照上图操作…

JUC高并发编程2:Lock接口

1 synchronized 1.1 synchronized关键字回顾 synchronized 是 Java 中的一个关键字,用于实现线程间的同步。它提供了一种简单而有效的方式来控制对共享资源的访问,从而避免多个线程同时访问同一资源时可能出现的竞态条件(race condition&am…

.net core8 使用JWT鉴权(附当前源码)

说明 该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发)。 该系统文章,我会尽量说的非常详细,做到不管新手、老手都能看懂。 说明:OverallAuth2.0 是一个简单、易懂、功能强…

LeetcodeTop100 刷题总结(二)

LeetCode 热题 100:https://leetcode.cn/studyplan/top-100-liked/ 文章目录 八、二叉树94. 二叉树的中序遍历(递归与非递归)补充:144. 二叉树的前序遍历(递归与非递归)补充:145. 二叉树的后序遍…

你的提交信息还在拖后腿?看这里,提升代码质量的绝招!

文章目录 前言一、什么是约定式提交?二、创建新仓库三、将代码推送到远程仓库的步骤1.检查当前远程仓库2.添加代码到暂存区3. 进行约定式提交4. 推送代码到远程仓库5. 完成推送 总结 前言 在当今软件开发领域,Git已经成为最广泛使用的版本控制系统之一。…

java算法OJ(1)位运算

目录 1.前言 2.正文 2.1位运算符号 2.1俩数相除 2.1.1题目 2.1.2示例 2.1.3题解 2.2二进制求和 2.2.1题目 2.2.2示例 2.2.3题解 2.3只出现一次的数字 2.3.1题目 2.3.2示例 2.3.3题解 2.4只出现一次的数字(进阶版) 2.4.1题目 2.4.2示例…

【ComfyUI】控制光照节点——ComfyUI-IC-Light-Native

原始代码(非comfyui):https://github.com/lllyasviel/IC-Light comfyui实现1(600星):https://github.com/kijai/ComfyUI-IC-Light comfyui实现2(500星):https://github.c…

cobbler自动批量安装多版本操作系统

本次虚拟化环境为VMware Workstation Pro,cobbler服务端为CentOS7.9,需要自动安装的版本为CentOS7.9和CentOS8.1 目录 一、安装cobbler服务端1、修改YUM源2、关闭防火墙3、安装软件包4、cobbler环境配置5、解决语法问题6、启动服务7、导入镜像8、自定义…

Spring自定义参数解析器

在这篇文章中,我们认识了参数解析器和消息转换器,今天我们来自定义一个参数解析器。 自定义参数解析器 实现HandlerMethodArgumentResolver的类,并注册到Spring容器。 Component//注册到Spring public class UserAr…

统信服务器操作系统【Cron定时任务服务】

Cron定时任务服务服务介绍、服务管理、服务配置 文章目录 一、功能概述二、功能介绍1. Cron 服务管理2.Cron 服务管理3.Cron 服务配置run-parts一、功能概述 cron是一个可以用来根据时间、日期、月份、星期的组合来 调度对周期性任务执行的守护进程。利用 cron 所提供的功能,可…

第十四届蓝桥杯嵌入式国赛

一. 前言 本篇博客主要讲述十四届蓝桥杯嵌入式的国赛题目,包括STM32CubeMx的相关配置以及相关功能实现代码以及我在做题过程中所遇到的一些问题和总结收获。如果有兴趣的伙伴还可以去做做其它届的真题,可去 蓝桥云课 上搜索历届真题即可。 二. 题目概述 …

七种修复错误:由于找不到msvcr110.dll 无法继续执行的方法

当你在运行某些程序时遇到“找不到msvcr110.dll”的错误提示,这通常意味着你的系统缺少了Microsoft Visual C 2012 Redistributable包中的一个重要文件。这个DLL文件是Microsoft Visual C Redistributable的一部分,用于支持许多使用Visual C编写的软件和…

Elasticsearch:检索增强生成背后的重要思想

作者:来自 Elastic Jessica L. Moszkowicz 星期天晚上 10 点,我九年级的女儿哭着冲进我的房间。她说她对代数一无所知,注定要失败。我进入超级妈妈模式,却发现我一点高中数学知识都不记得了。于是,我做了任何一位超级妈…

多颜色绘制语义分割/变化检测结果图

在论文绘图时,传统的二元语义分割结果图颜色单一(下图左),所以论文中常根据混淆矩阵类别使用多颜色进行绘制(下图右),可以看到,结果的可视化效果更好。 以下是绘制代码: …

Windows系统的Tomcat日志路径配置

文章目录 引言I Windows系统的Tomcat日志路径配置配置常规日志路径访问日志路径配置,修改server.xmlII 日志文件切割:以分隔割tomcat 的 catalina.out 文件为例子通过Linux系统自带的切割工具logrotate来进行切割引言 需求:C盘空间不足,处理日志文件,tomcat日志迁移到D盘…