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.cnUnity 手册:https://docs.unity.cn/cn/current/Manual/index.htmlUnity API:https://docs.unity.cn/cn/current/ScriptReference/index.html

        2)模型下载网站

Asset Store:https://assetstore.unity.com/account/listsPoly Haven:https://polyhaven.com/zhOpenGameArt:https://opengameart.orgSketchfab:https://sketchfab.comFree3D:https://free3d.com/3d-modelsCGTrader:https://www.cgtrader.com/free-3d-modelsGrabCAD: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.comTrending Color:https://coolors.co/palettes/trending

3 基础入门

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

4 资源管理

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

5 物理引擎

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

6 音视频

AudioSource组件VideoPlayer组件

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

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

8 GUI和UGUI基础及应用

GUI控件UGUI概述UGUI之TextUGUI之Image和RawImageUGUI之ButtonUGUI之ToggleUGUI之SliderUGUI之DropdownUGUI之InputFieldUGUI回调函数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大战魔方

好文推荐

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: