【Unity3D】Unity3D技术栈

1 前言

        本文梳理了笔者在学习 Unity3D 的过程中,对 Unity3D 的理解和学习路线,以帮助读者循序渐进地学习 Unity3D,后续笔者仍会持续更新 Unity3D 相关技术栈,并同步到本文中。

1.1 专栏文章特点

  • 知识系统:专栏从资源管理、物理引擎、音视频、UGUI、UI Toolkit、动画、导航、粒子、协程、网络、Shader、Shader Graph、GL、Lua 等多个专题深度剖析了 Unity3D 技术栈,帮助读者形成一个系统的 Unity3D 知识体系。
  • 循序渐进:专栏将专题及其知识点由易到难排布,避免读者往复查阅资料,使读者能够循序渐进地学习。
  • 科学严谨:专栏讲述的知识点或有 Demo 支撑、或有公式推导、或有源码佐证、或有官方资料可查,理论站得住脚,有理可循;对于一些概念,表述明确,尽量避免 “可能”、“也许” 等含糊不清的词语,避免使用疑问句、感叹句;对于拿捏不定的知识点,尽量不展现给读者,使读者能放心吸收专栏的知识。
  • 逻辑清晰:专栏尽可能将每个知识点的前因后果展现给读者,讲清楚 What、How、Why,使读者知其所以然。
  • 紧扣主题:对于专栏中的每篇文章,读者通过查阅文章标题和章节标题即可了解文章内容,方便读者快速阅读和筛选文章。
  • 语言简练:专栏使用书面的表达方式,避免使用口语表达,避免冗余陈述,避免描述与主题不相关的内容,避免带入个人情感,使读者阅读效率更高。
  • 图文并茂:专栏大量使用了 gif 动图和图片,使读者能够更直观地理解知识点。
  • 案例丰富:专栏通过大量的案例讲解知识点,使读者对知识点的理解更深刻。
  • 案例解耦:专栏尽可能使用最简单的案例解释知识点,力求一个案例只讲解一个知识点,避免将多个知识点揉在一个案例中,造成读者抓不住文章的重点。案例不是为了秀肌肉,而是为了讲清楚一个知识点。
  • 持续更新:专栏长期持续更新,给读者及时补充新的知识。
  • 多站发布:专栏在 CSDN、知乎、掘金、简书、博客园、GitCode 等网站都有发布,读者可以根据自己的喜好选择对应网站。

1.2 读者解惑

        不少读者给笔者留言,笔者就其中问得比较频繁且有价值的问题作出以下答疑解惑。

        1)学完该专栏需要多久

        每个人的学习进度不一样,与每天投入时间、理解力、数学基础、心态、执行力等因素相关,具体学习时间较难评估。本专栏所有文章总页数为 997 页(截至 2023.10.31),读者可以根据平时阅读相同页数的书籍所消耗的时间来评估。

        2)专栏知识点来自哪里

        专栏知识点主要来源于 B 站、博客网站(CSDN、知乎、掘金等)、GitHub、官方文档、书籍、源码、工作总结、生活灵感等。B 站是获取知识最快的途径,博客网站是资料最多的知识源(各个博主从不同的角度描述了对同一个知识点的理解,通过阅读不同博主的博客,对该知识点就能形成较全面的认知),GitHub 是 Demo 最多的知识源,官方文档是最全面的知识源(但是较难读懂,主要因为 Demo 太少,缺少动图),书籍是最系统的知识源,源码是最权威的知识源。

        3)为什么网上那么多资料还要自己写博客

  • 网上资料虽多,但经常不对口,只有自己总结的才是自己想要的,自己的文章,想怎么修改就怎么修改,也方便后期进行扩展延申。
  • 通过总结,加深对知识点的理解。看别人资料时,碰到一知半解的地方,经常会选择性地放过自己;如果自己总结,不能发出去忽悠别人,不然很容易被喷,迫使自己必须弄清楚,有时候也能收到一些意外的收获。
  • 只有自己实践过、推导过的知识点,使用起来才会更放心、更顺手;光看别人的资料,不实践,不推导,后面用起来时可能会碰到一大堆问题,使得我们怀疑之前学的知识点的正确性。
  • 输出了大量的 Demo,工作中或多或少用得上,可以极大提高工作效率;另外,通过回顾这些简单的 Demo,可以快速理解别人的代码。
  • 打通 Unity3D 全栈,构建系统的知识体系,形成技术闭环。

        4)写博客的动力是什么

        写博客的动力主要源于对 Unity3D 的兴趣和对未知的焦虑。希望积累更多的知识,能够更轻松地应对工作;碰到裁员时,也能更从容地面对。

2 相关网站

        1)Unity 相关网站

  • Unity 官网:https://unity.cn
  • Unity 手册:https://docs.unity.cn/cn/current/Manual/index.html
  • Unity API:https://docs.unity.cn/cn/current/ScriptReference/index.html

        2)模型下载网站

  • Asset Store:https://assetstore.unity.com/account/lists
  • Poly Haven:https://polyhaven.com/zh
  • OpenGameArt:https://opengameart.org
  • Sketchfab:https://sketchfab.com
  • Free3D:https://free3d.com/3d-models
  • CGTrader:https://www.cgtrader.com/free-3d-models
  • GrabCAD:https://grabcad.com/library
  • 微妙网:https://www.wmiao.com
  • 爱给网:https://www.aigei.com/3d/model

         3)动画下载网站

  • Mixamo:https://www.mixamo.com

        4)图片下载网站

  •  橙光:https://www.66rpg.com/Drawtrade/goods/goodslist

        5)音频下载网站

  •  freesound:https://freesound.org

        6)配色方案网站

  • Flat UI Colors:https://flatuicolors.com
  • Trending Color:https://coolors.co/palettes/trending

3 基础入门

  • 常用快捷键
  • 地形Terrain
  • MonoBehaviour的生命周期
  • Transform组件
  • 人机交互Input
  • 角色控制器(CharacterController)
  • 场景切换、全屏/恢复切换、退出游戏、截屏

4 资源管理

  • 资源管理
  • 基于AssetBundle实现资源热更新

5 物理引擎

  • 刚体组件Rigidbody
  • 碰撞体组件Collider
  • 发射(Raycast)物理射线(Ray)

6 音视频

  • AudioSource组件
  • VideoPlayer组件

7 灯光和相机组件及其应用

  • 灯光组件Light
  • 相机
  • 立方体纹理(Cubemap)和天空盒子(Skybox)
  • 相机跟随
  • 缩放、平移、旋转场景

8 GUI和UGUI基础及应用

  • GUI控件
  • UGUI概述
  • UGUI之Text
  • UGUI之Image和RawImage
  • UGUI之Button
  • UGUI之Toggle
  • UGUI之Slider
  • UGUI之Dropdown
  • UGUI之InputField
  • UGUI回调函数
  • UGUI之布局组件
  • 血条(HP)
  • 摇杆

9 UI Toolkit

  • UI Toolkit简介
  • UI Toolkit容器
  • UI Toolkit元素
  • UI Toolkit样式选择器
  • UI Toolkit自定义元素
  • UI Toolkit数据动态绑定

10 动画

  • 2D动画
  • 人体模型及动画
  • 人物跟随鼠标位置
  • 动画回调函数、动画事件、动画曲线
  • 动画混合
  • IK动画

11 导航系统

  • 导航系统
  • 分离路面导航
  • 动态路障导航

12 特效组件

  • 拖尾TrailRenderer
  • 线段渲染器LineRenderer
  • 粒子系统ParticleSystem
  • 基于粒子系统实现烟花特效

13 并发程序

  • 协同程序

14 网络编程

  • 同步Socket通讯
  • 异步Socket通讯
  • Photon环境搭建

15 网格和Bounds应用

  • 绘制物体表面三角形网格
  • 点选物体、框选物体、绘制外边框
  • 绘制物体外框线条盒子

16 Unity Shader

16.1 图形学基础理论

  • 渲染管线
  • 空间和变换
  • 伽马校正
  • Shader常量、变量、结构体、函数

16.2 着色器

  • 固定管线着色器一
  • 固定管线着色器二
  • 表面着色器
  • 顶点和片元着色器

16.3 光照基础

  • 法线贴图和凹凸映射
  • 阴影原理及应用
  • 反射和折射

16.4 模型特效

  • 广告牌特效
  • 动态路径特效
  • 地面网格特效
  • 激光灯、碰撞特效
  • 选中物体消融特效
  • 基于模板测试和顶点膨胀的描边方法
  • 花瓣特效

16.5 屏幕后处理特效

  • 调整屏幕亮度、饱和度、对比度
  • 边缘检测特效
  • 高斯模糊特效
  • Bloom特效
  • 运动模糊特效
  • 选中物体描边特效
  • 水波特效
  • 半球卷屏特效
  • 卷轴特效

16.6 屏幕深度和法线纹理特效

  • 屏幕深度和法线纹理简介
  • 激光雷达特效
  • 流动雾效
  • 基于深度和法线纹理的边缘检测方法
  • 平面光罩特效

16.7 非真实渲染(NPR)

  • 素描特效

16.8 URP

  • Renderer Feature简介

17 Shader Graph

  • Shader Graph简介
  • Shader Graph节点
  • 程序纹理简单应用
  • 消融特效
  • 水面特效

18 GL应用

  • 使用GL绘制线段

19 逻辑热更新

  • Lua基础语法
  • ToLua逻辑热更新
  • xLua逻辑热更新

20 加载大模型

  • Cesium加载大地图

21 发布平台

  • Unity与Android交互

22 综合应用

  • Tank大战
  • 魔方

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/587280.shtml

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

相关文章

python------Pymysql模块

查询 总结: fetchall(): 获取所有查询到的内容。返回结果是嵌套的元组 fetchone(): 获取一条数据。返回结果就是一个非嵌套的元组 fetchmany(num): 返回结果是元组嵌套,底层也是有游标的。如果不传递参数num,默认读取一条数据 注意: 与文件…

CSS与JavaScript的简单认识

CSS:是一门语言,用于控制网页表现,让页面更好看的。 CSS(Cascading Style Sheet):层叠样式表 CSS与html结合的三种方式: 1、内部样式:用style标签,在标签内部定义CSS样式…

vim学习笔记

vim学习笔记 Linux Vim编辑器的基本使用 显示行号 set nu 自动补全 CTRL-N或CTRL-P $到当前行的末尾 u 撤销上一步的操作 Ctrlr 恢复上一步被撤销的操作 vim下配置tab缩进格数 原始文件&#xff1a; helloworld nice 普通缩进 shift > &#xff08;或者 Shift <…

springcloud微服务篇--6.网关Gateway

一、为什么需要网关&#xff1f; 网关功能&#xff1a; 身份认证和权限校验 服务路由、负载均衡 请求限流 在SpringCloud中网关的实现包括两种&#xff1a; gateway zuul Zuul是基于Servlet的实现&#xff0c;属于阻塞式编程。而SpringCloudGateway则是基于Spring5中提供的Web…

【SpringCloud笔记】(12)分布式请求链路跟踪之Sleuth

Sleuth 背景 在微服务框架中&#xff0c;一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果&#xff0c;每一个前段请求都会形成一条复杂的分布式服务调用链路&#xff0c;链路中的任何一环出现高延时或错误都会引起整个请求最后的…

通信原理课设(gec6818) 006:网络编程

目录 1、概念 2、通信 3、通信基本流程 TCP: UDP: 4、函数 I 创建套接字 II 绑定地址 III 字节序转换 IV 地址转换 V 监听 VI accept VII connect VIII 从套接字接收信息 IX 从套接字发送消息 X 关闭套接字 5、网络配置 1、确保你的网卡里面有两个虚拟网卡&a…

WeNet语音识别分词制作词云图

在线体验 ,点击识别语音需要等待一会&#xff0c;文件太大缓存会报错 介绍 本篇博客将介绍如何使用 Streamlit、jieba、wenet 和其他 Python 库&#xff0c;结合语音识别&#xff08;WeNet&#xff09;和词云生成&#xff0c;构建一个功能丰富的应用程序。我们将深入了解代码…

JavaScript 中类和构造函数的区别

JavaScript 中的类和构造函数在实现上有一些区别&#xff0c;但它们的目的相同&#xff0c;都是用于创建对象。 构造函数是一种特殊的函数&#xff0c;它用于创建对象。构造函数使用 new 关键字来创建一个对象实例&#xff0c;并将属性和方法添加到该实例上。构造函数一般以大…

XXL-JOB学习笔记-基于注解实现自动注册新建任务

项目每次注册新建任务都需要手动操作配置xxl-job&#xff0c;不同的环境都需要手动操作配置一次&#xff0c;比较麻烦&#xff0c;为此想要简化相关的手动操作工作&#xff0c;基于注解的形式实现自动注册新建任务。 本篇是在之前一篇基于代码实现新建任务的基础上进一步实现。…

AUTOSAR从入门到精通- 虚拟功能总线(RTE)(三)

目录 前言 RTE的主要功能 几个高频面试题目 RTE基础面试题目 什么是数据转换?

第2课 使用FFmpeg读取rtmp流并用openCV显示视频

本课对应源文件下载链接&#xff1a; https://download.csdn.net/download/XiBuQiuChong/88680079 这节课我们开始利用ffmpeg和opencv来实现一个rtmp播放器。播放器的最基本功能其实就两个:显示画面和播放声音。在实现这两个功能前&#xff0c;我们需要先用ffmpeg连接到rtmp服…

LVS负载均衡配置虚拟引起微服务注册混乱

线上小程序突然报错&#xff0c;查看网关日志&#xff0c;访问下游微服务A时大量报错&#xff1a; 1&#xff09;检查微服务是否未注册。登录eureka页面&#xff0c;发现三个节点均正常注册 三个微服务节点地址分别为&#xff1a;13.9.1.91:8080&#xff0c;13.9.1.92:8080和1…

开源服务指南使用手册

开源服务指南是什么&#xff1f;从哪里来&#xff1f;往哪里去&#xff1f; 定位 用中文推荐优质开源项目&#xff0c;让开发者更容易找到趁手的开源工具。 Slogan 发现开源之美&#xff0c;碰撞无限可能。 我们想要让大家知道更多优秀的开源项目&#xff0c;发现开源的美…

ARM CCA机密计算软件架构之软件堆栈概述

Arm CCA平台通过硬件添加和固件组件的混合方式实现,例如在处理元素(PEs)中的RME以及特定的固件组件,特别是监视器和领域管理监视器。本节介绍Arm CCA平台的软件堆栈。 软件堆栈概述 领域VM的执行旨在与Normal world(正常世界)隔离,领域VM由Normal world Host(正常世界…

【软件工程】融通未来的工艺:深度解析统一过程在软件开发中的角色

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; 软件工程 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言&#xff1a; 正文 统一过程&#xff08;Unified Process&#xff09; 介绍和解释&#xff1a; 应用&#xff1a; 优缺点&#xf…

C/C++ 函数的默认参数

下面介绍一项新内容 - 默认参数。 默认参数指的是当函数调用中省略了实参时自动使用的一个值。 例如&#xff0c;如果将 void wow (int n)设置成n 有默认值为1&#xff0c;则函数调用 wow()相当于 wow(1)这极大地提高了使用函数的灵活性。 假设有一个名为left()的函数&#xff…

SpringIOC之ApplicationObjectSupport

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

pytorch与cuda版本对应关系汇总

pytorch与cuda版本关系 cuda版本支持pytorch版本cuda10.21.5 ~ 1.12cuda11.01.7 ~ 1.7.1cuda11.11.8 ~ 1.10.1cuda11.31.8.1 ~ 1.12.1cuda11.61.12.0 ~ 1.13.1cuda11.71.13.0 ~ 2.0.1cuda11.82.0.0 ~ 2.1.1cuda12.12.1.0 ~ 2.1.1 cuda 与 cudnn关系 cuda版本支持cudnn版本cu…

微信小程序:跳转页面

实际调用需要根据自己业务实际情况决定&#xff0c;虽然各种方式一定程度上能减少内存损耗&#xff0c;但是业务上面流转优化才是最终要满足的&#xff0c;一定要从业务流转去优化去考虑&#xff0c;不要为了性能增加了流转复杂度 1、wx.navigateTo 保留当前页面&#xff0c;跳…

12、defer

defer defer意思是推迟、延迟。语法很简单&#xff0c;就在正常的语句前加上defer就可以了。 ​ 在某函数中使用defer语句&#xff0c;会使得defer后跟的语句进行延迟处理&#xff0c;当该函数即将返回时&#xff0c;或发生panic时&#xff0c;defer后语句开始执行。注意os.E…