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.rhkb.cn/news/435434.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

8621 二分查找

**思路:** 1. 读取输入的元素个数 n。 2. 读取有序数组 ST。 3. 读取要查找的关键字 key。 4. 使用折半查找法(即二分查找)在数组 ST 中查找 key 的位置。 5. 如果找到 key,输出其位置;如果未找到,输出 &qu…

[Linux]:线程(二)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 与Windows环境不同,我们在linux环境下需要通过指令进行各操作&…

自然语言处理实战项目:从基础到实战

自然语言处理实战项目:从基础到实战 自然语言处理(Natural Language Processing, NLP)是人工智能的重要分支,致力于让计算机能够理解、生成和处理人类语言。NLP 在搜索引擎、智能客服、语音助手等场景中扮演着关键角色。本文将带…

使用python进行自然语言处理的示例

程序功能 分词:将输入句子拆分为单词。 词性标注:为每个单词标注其词性。 命名实体识别:识别命名实体(如人名、地名、组织等)。 这段代码展示了如何用 nltk 进行基础的 NLP 任务,包括分词、词性标注和命名…

Django Web开发接口定义

Django Web 介绍 Django Web是一个Pyhton高级 Web 框架,实际上 Django 也可以做到前后端分离,即主要作为后端框架使用,不用模板渲染也是可行的。 Django Web 应用的运行流程,如下图所示: 此外,Django Web 在开发环境可以通过自带的服务器进行本地调试。但是该服务器不适…

Spring - @Import注解

文章目录 基本用法源码分析ConfigurationClassPostProcessorConfigurationClass SourceClassgetImportsprocessImports处理 ImportSelectorImportSelector 接口DeferredImportSelector 处理 ImportBeanDefinitionRegistrarImportBeanDefinitionRegistrar 接口 处理Configuratio…

从零预训练一个tiny-llama#Datawhale组队学习Task2

完整的教程请参考:datawhalechina/tiny-universe: 《大模型白盒子构建指南》:一个全手搓的Tiny-Universe (github.com) 这是Task2的学习任务 目录 Qwen-blog Tokenizer(分词器) Embedding(嵌入) RMS …

【2025】基于Django的鱼类科普网站(源码+文档+调试+答疑)

文章目录 一、基于Django的鱼类科普网站-项目介绍二、基于Django的鱼类科普网站-开发环境三、基于Django的鱼类科普网站-系统展示四、基于Django的鱼类科普网站-代码展示五、基于Django的鱼类科普网站-项目文档展示六、基于Django的鱼类科普网站-项目总结 大家可以帮忙点赞、收…

Codeforces Round 975 (Div. 2) A-C 题解

这次看到 C 题分数 1750 就开始害怕了,用小号打的比赛,一直觉得做不出来,最后才想到 A. Max Plus Size 题意 给你一些整数,选择一些涂成红色,两两不能相邻,你的得分为: [ 红色元素的个数 ] …

什么是 JWT?它是如何工作的?

松哥最近辅导了几个小伙伴秋招,有小伙伴在面小红书时遇到这个问题,这个问题想回答全面还是有些挑战,松哥结合之前的一篇旧文和大伙一起来聊聊。 一 无状态登录 1.1 什么是有状态 有状态服务,即服务端需要记录每次会话的客户端信…

努比亚z17努比亚NX563j原厂固件卡刷包下载_刷机ROM固件包下载-原厂ROM固件-安卓刷机固件网

努比亚z17努比亚NX563j原厂固件卡刷包下载_刷机ROM固件包下载-原厂ROM固件-安卓刷机固件网 统版本:官方软件作者:热心网友rom大小:911MB发布日期:2018-12-23 努比亚z17努比亚NX563j原厂固件卡刷包下载_刷机ROM固件包下载-原厂RO…

JVM相关的命令汇总

一、简介 虽然目前市场上有很多成熟的 JVM 可视化监控分析工具,但是所有的工具其实都依赖于 JDK 的接口和底层相关的命令,了解这些命令的使用对于在紧急情况下排查 JVM 相关的线上故障,会有更加直观的帮助。 下面一起来看看 JVM 常用的命令…

图像处理基础知识点简记

简单记录一下图像处理的基础知识点 一、取样 1、释义 图像的取样就是图像在空间上的离散化处理,即使空间上连续变化的图像离散化, 决定了图像的空间分辨率。 2、过程 简单描述一下图象取样的基本过程,首先用一个网格把待处理的图像覆盖,然后把每一小格上模拟图像的各个…

五、CAN总线

目录 一、基础知识 1、can介绍 2、CAN硬件电路 3、CAN电平标准 4、CAN收发器芯片介绍 5、CAN帧格式 ① CAN帧种类 ② CAN数据帧 ③ CAN遥控帧​编辑 ④ 位填充 ⑤ 波形实例 6、接收方数据采样 ① 接收方数据采样遇到的问题 ② 位时序 ③ 硬同步 ④ 再同步 ⑤ 波…

1.8 软件业务测试

欢迎大家订阅【软件测试】 专栏,开启你的软件测试学习之旅! 文章目录 前言1 概述2 方法3 测试策略4 案例分析 前言 在软件开发生命周期中,业务测试扮演着至关重要的角色。本文详细讲解了业务测试的定义、目的、方法以及测试策略。 本篇文章参…

信息安全数学基础(22)素数模的同余式

前言 信息安全数学基础中的素数模的同余式是数论中的一个重要概念,它涉及到了素数、模运算以及同余关系等多个方面。 一、基本概念 素数:素数是指只能被1和它本身整除的大于1的自然数。素数在密码学中有着广泛的应用,如RSA加密算法就依赖于大…

订餐点餐|订餐系统基于java的订餐点餐系统小程序设计与实现(源码+数据库+文档)

订餐点餐系统小程序 目录 基于java的订餐点餐系统小程序设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布…

9.29 LeetCode 3304、3300、3301

思路: ⭐进行无限次操作,但是 k 的取值小于 500 ,所以当 word 的长度大于 500 时就可以停止操作进行取值了 如果字符为 ‘z’ ,单独处理使其变为 ‘a’ 得到得到操作后的新字符串,和原字符串拼接 class Solution { …

[CSP-J 2022] 解密

题目来源:洛谷题库 [CSP-J 2022] 解密 题目描述 给定一个正整数 k k k,有 k k k 次询问,每次给定三个正整数 n i , e i , d i n_i, e_i, d_i ni​,ei​,di​,求两个正整数 p i , q i p_i, q_i pi​,qi​,使 n …

verilog实现FIR滤波系数生成(阶数,FIR滤波器类型及窗函数可调)

在以往采用 FPGA 实现的 FIR 滤波功能,滤波器系数是通过 matlab 计算生成,然后作为固定参数导入到 verilog 程序中,这尽管简单,但灵活性不足。在某些需求下(例如捕获任意给定台站信号)需要随时修改滤波器的…