【游戏开发指路】Unity学习路线,三万字大纲(面试题大纲 | 知识图谱 | Unity游戏开发工程师)

文章目录

一、前言

嗨,大家好,我是新发。
有不少同学私信和评论让我讲讲Unity的学习顺序,说不知道怎么系统地去学,遇到很多问题不知道如何去处理。
嗯,那我就根据我自己的成长过程,写一下Unity的学习路线吧。

二、我的大学

首先说下我的大学,我是2014年毕业于华南理工大学,读的是信息工程专业,专业课程主要如下:
在这里插入图片描述
我其实一开始并不确定我会从事游戏行业,也是在工作中不断去学习积累的,希望我的学习路线可以帮助到学Unity的同学。由于内容太多,我只列出大致的大纲,大家可以跟着我的大纲进行学习。

三、Unity学前

1、C#基础

在这里插入图片描述

1.1、数据类型

  • 值类型
  • 引用类型
  • 指针类型
  • 装箱与拆箱

1.2、变量

  • 定义
  • 初始化

1.3、常量

  • 定义
  • 引用

1.4、运算符

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 赋值运算符

1.5、判断

  • if 语句
  • if … else语句
  • 嵌套 if 语句
  • switch 语句
  • 嵌套 switch 语句
  • ?: 条件运算符

1.6、循环

  • while 循环
  • for/foreach 循环
  • do … while 循环
  • 嵌套循环
  • break 语句
  • continue 语句

1.7、数组

  • 声明
  • 初始化
  • 赋值
  • 访问
  • 遍历
  • 多维数组
  • Array与ArrayList的区别

1.8、枚举

  • 声明
  • 访问
  • 与int、string的转换
  • 判断枚举是否包含id

1.9、字符串

  • 字符串比较
  • 字符串替换
  • 字符串连接
  • 判断是否含有字符串
  • 复制字符串
  • 判断是否是以某个字符串结尾
  • 判断是否是以某个字符串开头
  • 字符串判等
  • 字符串格式化
  • 求索引
  • 字符串判空
  • 使用分隔符连接字符串数组
  • 使用分隔符分割字符串
  • 插入字符串
  • 移除字符串
  • 转char[]
  • 大小写转换
  • 去除前后空白字符

1.10、命名空间

  • 定义
  • using
  • 嵌套命名空间

1.11、类

  • 定义
  • 成员函数
  • 构造函数
  • 析构函数
  • 静态成员
  • 密封类
  • 静态类

1.12、结构体

  • 定义
  • 特点
  • 类与结构体的区别

1.13、接口

  • 定义
  • 继承

1.14、方法

  • 定义
  • 调用
  • 递归
  • ref与out
  • 不定参数

1.15、封装

  • 访问修饰符
  • 类与结构体的区别

1.16、继承

  • 基类与派生类
  • 接口多继承
  • 抽象类与接口区别

1.17、多态性

  • 函数重载
  • 运算符重载
  • 抽象类
  • 虚方法

1.18、运算符重载

  • 定义
  • 执行

1.19、IO操作

  • File类
  • Directory类
  • Path类
  • FileStream类
  • StreamReader类
  • StreamWriter类
  • BinaryReader类
  • BinaryWriter类

1.20、预处理

  • #define
  • #undef
  • #if
  • #else
  • #elif
  • #endif
  • #region
  • #endregion

1.21、异常处理

  • try、catch、finally 、throw
  • 异常类
  • 自定义异常

2、C#进阶

在这里插入图片描述

2.1、Attribute特性

  • 预定义特性
    • AttributeUsage
    • Conditional
    • Obsolete
  • 自定义特性
    • 声明
    • 构建
    • 应用

2.2、反射

  • 概念
  • 原理
  • 用途
  • 优缺点
  • 使用

2.3、属性

  • get/set访问器
  • 抽象属性

2.4、索引器

  • this[int index]
  • 用途
  • 重载索引器

2.5、委托

  • 概念
  • 用途
  • 声明
  • 实例化
  • 委托多播

2.6、事件

  • 概念
  • 用途
  • 声明
  • 使用
  • 事件与委托的区别

2.7、集合

  • ArrayList
  • Hashtable
  • SortedList
  • Stack
  • Queue
  • BitArray

2.8、泛型

  • 特性
  • 泛型类
  • 泛型方法
  • 泛型委托
  • 泛型接口
  • 泛型约束

2.9、匿名方法

  • 概念
  • 语法
  • 委托与匿名方法
  • Lambda表达式

2.10、不安全代码

  • unsafe
  • 托管代码与非托管代码

2.11、正则表达式

  • 字符转义
    • \r
    • \n
    • \b
    • \t
  • 字符类
    • [character_group]
    • [^character_group]
    • [first - last]
    • \w与\W
    • \s与\S
    • \d与\D
  • 定位符
    • ^
    • $
    • \A
    • \Z
    • \z
    • \G
    • \b
    • \B
  • 限定符
    • *
    • +
    • {n}
    • {n,}
    • {n, m}
  • Regex类

2.12、多线程

  • 线程生命周期
  • 创建线程
  • 暂停线程
  • 销毁线程

四、Unity入门

在这里插入图片描述

1、Unity的安装与激活

1.1、中国版与国际版

  • 中国版
    • https://unity.cn/
  • 国际版
    • https://unity.com/

1.2、Unity下载

  • https://unity.cn/releases

1.3、Unity激活

  • 专业版
  • 加强版
  • 个人版

2、Unity社区

2.1、中文手册

  • https://docs.unity.cn/cn/current/Manual/index.html

2.2、技术专栏

  • https://developer.unity.cn/articles

2.3、技术问答

  • https://developer.unity.cn/ask/home

2.4、中文课堂

  • https://learn.u3d.cn/

2.5、官方Bilibili

  • https://space.bilibili.com/386224375

2.6、资源商店

  • https://assetstore.unity.com/

3、IDE安装

3.1、Windows

  • Visual Studio
  • VS Code
  • Sublime

3.2、MacOS

  • VS Code
  • XCode
  • Sublime

4、认识编辑器

4.1、视图面板

  • Scene面板:上帝视角的场景
  • Game面板:玩家视角的画面
  • Hierarchy面板:层级面板
  • Inspector面板:属性面板
  • Paoject面板:工程目录
  • Console面板:日志面板

4.2、常用菜单

  • File / Open Project:打开工程
  • File / Build Settings:打包设置
  • Edit / Preferences:偏好设置
  • Edit / Project Settings:工程设置
  • Windows / Package Manager:插件包管理

5、工程目录结构

5.1、Assets目录

  • Scripts:代码目录
  • Editor:编辑器拓展目录
  • Plugins:插件目录
  • Gizmos:绘图资源目录
  • Resources:资源目录
  • StreamingAssets:流式资源目录
  • RawAssets (自定义):生肉资源目录
  • GameAssets (自定义):熟肉资源目录
  • Shaders:Shader代码目录
  • Scenes:场景目录

5.2、ProjectSettings目录

  • 工程设置目录

5.3、UserSettings目录

  • 用户设置目录

5.4、Library目录

  • 编译目录

6、图片

  • 导入图片
  • 设置格式

7、模型

  • 创建:几何体模型
  • 导入:外部模型

8、材质球

  • 创建材质球
  • 设置材质球
    • 设置Shader
    • 赋值给模型
    • 调整参数

9、声音

  • 导入
  • 播放

10、预设

  • 创建预设
  • 保存预设
  • 编辑预设
  • 加载预设
    • Resources.Load
    • AssetDatabase.LoadAssetAtPath
    • AssetBundle.LoadFromFile
  • 实例化预设
    • Object.Instantiate

11、GameObject

  • 创建GameObject
  • 设置父节点
  • 挂脚本
  • 隐藏与现实
  • 销毁GameObject

12、Transform

  • 移动
  • 旋转
  • 缩放

13、运行测试

  • 运行
  • 暂停
  • 停止

14、Windows打包

  • 打包:Windows
  • 测试

五、Unity初级

在这里插入图片描述

1、C#脚本

  • 创建:Create / C# Script
  • 挂脚本
    • 手动挂:AddComponent
    • 代码挂:AddComponent
  • 获取脚本:GetComponent
  • 移除脚本(手动):RemoveComponent
  • 移除脚本(代码):Destroy(脚本对象)
  • 激活与禁用
    • 手动
    • 代码:enabled
  • 生命周期
    • Awake
    • OnEnable
    • Start
    • Update
    • FixUpdate
    • LateUpdate
    • OnDisable
    • OnDestroy
  • 打印日志
  • 断点调试

2、UGUI

2.1、UGUI基础组件

  • Text
  • Image
  • RawImage
  • Button
  • Toggle
  • Slider
  • Scrollbar
  • Dropdown
  • InputField
  • Canvas
  • Panel
  • ScrollView

2.2、UGUI实操

  • 文字描边
  • 文字阴影
  • 文字对齐
  • 文字自动换行
  • 血条/进度条
  • 圆圈进度条
  • 技能CD
  • 图片循环
  • 图片置灰
  • 圆形头像
  • 按钮换图
  • 单选/多选框
  • 左右开关
  • 横向布局
  • 纵向布局
  • 网格布局
  • 切九宫格

3、引擎常用组件

3.1、Audio组

  • AudioSource
  • AudioListener

3.2、Effects组

  • ParticleSystem
  • LineRenderer
  • TrailRenderer

3.3、Event组

  • EventSystem
  • EventTrigger
  • GraphicRaycaster

3.4、Layout组

  • RectTransform
  • Canvas
  • CanvasGroup
  • CanvasScaler
  • AspectRatioFitter
  • ContentSizeFitter
  • GridLayoutGroup
  • HorizontalLayoutGroup
  • VerticleLayoutGroup
  • LayoutElement

3.5、Mesh组

  • MeshFilter
  • MeshRenderer
  • SkinnedMeshRenderer
  • TextMeshPro-Text

3.6、Miscellaneous组

  • Animator
  • Animation

3.7、Nevigation组

  • NavMeshAgent
  • NavMeshObstacle

3.8、Physics2D组

  • Rigidbody2D
  • BoxCollider2D
  • CapsuleCollider2D
  • CircleCollider2D
  • CompositeCollider2D
  • EdgeCollider2D

3.9、Physics组

  • Rigidbody
  • BoxCollider
  • CapsuleCollider
  • SphereCollider
  • CharacterController
  • TerrainCollider

3.10、Rendering组

  • Camera
  • CanvasRenderer
  • SpriteRenderer
  • Skybox
  • SortingGroup
  • Light

4、发布

4.1、基础设置

  • 设置APP名字
  • 设置APP图标
  • 设置闪屏
  • 设置版本号

4.2、平台发布

  • Windows平台
    • 设置分辨率
    • 设置后台运行
    • 发布exe
  • Android平台
    • JDK安装
    • Android SDK下载
    • NDK下载
    • Gradle下载
    • 设置keystore
    • 发布apk
  • iOS
    • 导出XCode工程
    • 申请证书
    • 安装证书
    • 设置证书
    • 发布ipa

5、编辑器拓展

5.1、拓展Project视图

  • 右键菜单
    • [MenuItem(“Assets/My Tools/Tools 1”, false, 2)]
  • 拓展布局
    • [InitializeOnLoadMethod]
    • EditorApplication.projectWindowItemOnGUI

5.2、拓展Hierarchy视图

  • 右键菜单
    • [MenuItem(“GameObject/My Create/Cube”,false,0)]
  • 拓展布局
    • [InitializeOnLoadMethod]
    • EditorApplication.hierarchyWindowItemOnGUI

5.3、拓展Inspector视图

  • 拓展组件
    • [CustomEditor(typeof(Camera))]
    • public override void OnInspectorGUI()
  • 拓展Context菜单
    • [MenuItem(“CONTEXT/Transform/New Context 1”)]
    • MenuCommand

5.4、拓展Scene视图

  • 画线或3D物体
    • OnDrawGizmos
    • OnDrawGizmosSelected
  • 画GUI
    • [CustomEditor(typeof(Camera))]
    • OnSceneGUI
    • Handles

5.5、拓展顶部菜单

  • 带勾选的菜单
    • [MenuItem(“MenuTest/Test”, false, 3)]
    • Menu.GetChecked
    • Menu.SetChecked
  • 带快捷键的菜单
    • [MenuItem(“Assets/HotKey %#d”,false,-1)]
    • %:表示Ctrl键
    • #:表示Shift键
    • &:表示Alt键

六、Unity中级

在这里插入图片描述

1、UGUI案例

  • 打图集
  • UI适配分辨率
  • UI界面分层
  • 背景图适配文字宽度
  • 模型显示在UI上
  • 粒子显示在UI上
  • UI裁切3D模型
  • UI裁切粒子
  • 艺术字体制作
  • 不规则按钮
  • 跑马灯
  • 图文混排
  • 图片镜像对称
  • 多层嵌套滑动列表
  • 摇杆
  • 雷达图
  • 折线图
  • 循环列表
  • 小地图
  • 头顶文字
  • 适配刘海屏

2、简单物理

2.1、刚体

  • 类型
  • 移动
  • 重力

2.2、碰撞

  • 条件
  • 检测

2.3、触发器

  • 设置
  • 检测

2.4、物理材质

  • 创建
  • 摩擦力
  • 弹性
  • 设置引用

2.5、射线

  • 发射
  • 检测
  • 结果

2.6、弹簧

  • 设置
  • 案例

3、动画

  • Animator
  • Animation
  • 状态机变量
  • 动画融合
  • 状态切换
  • 混合树

4、粒子系统

  • 创建
  • 制作
  • 播放
  • 案例
    • 火焰
    • 下雪
    • 水花
    • 闪电
    • 激光
    • 爆炸
    • 烟雾
    • 喷射
    • 闪光
    • 魔法阵
    • 溅血

5、寻路导航

  • 导航障碍物
  • 导航烘焙
  • 导航代理
  • 点击寻路
  • 寻路跳跃

6、Json

  • LitJson库
  • 构建JsonData
  • JsonData与string的转换
  • JsonData与数组和字典的转换

7、二维码

  • ZXing库
  • 生成二维码
  • 保存为图片

8、插值缓动

  • DoTween插件
  • 平滑移动
  • 平滑旋转
  • 平滑缩放
  • 平滑插值自定义变量

9、Zip压缩与解压

  • Ionic.Zip.Unity插件
  • 创建zip文件
  • 解压zip文件
  • 显示解压进度

10、Behavior Designer

  • 插件下载
  • 编辑器界面
  • 设置变量
  • Composites类节点
  • Decorators类节点
  • Actions类节点
  • Conditionals类节点
  • 优先级与打断
  • 行为树存储
  • 行为树加载
  • 行为树控制

11、Cinemachine

  • 插件安装
  • 摄像机跟随
    • 自由视角跟随
    • 固定视角跟随
  • 轨道镜头
  • 轨道镜头跟随
  • 镜头融合
  • 跟随目标组
  • 切镜
  • 自由观察摄像机
  • 状态驱动摄像机
  • 轨道物体
  • 2D摄像机
  • 与TimeLine配合使用

12、TimeLine

  • 插件安装
  • 创建TimeLine资源
  • 创建轨道
  • Activation Track轨道
  • Animation Track轨道
  • Audio Track轨道
  • Control Track轨道
  • Signal Track轨道
  • Playable Track轨道
  • TimeLine倒放

13、Tilemap

  • 插件安装
  • 创建调色板
  • 制作瓦片
  • 绘制瓦片
  • 删除瓦片
  • 填充瓦片
  • 多瓦片涂刷
  • 瓦片缝隙问题
  • 瓦片序列帧
  • 瓦片自适应方向
  • 添加碰撞

14、ProBuilder

  • 插件安装
  • 创建模型
  • 编辑点线面
  • 设置顶点颜色
  • 镜像克隆
  • 编辑材质
  • 同材质与颜色选择
  • 模型导出
  • 案例
    • 跑酷场景
    • 障碍物道具

15、版本管理

15.1、SVN

  • SVN客户端下载与安装
  • SVN工程检出
  • SVN更新
  • SVN提交
  • SVN合并
  • SVN日志查看
  • SVN还原
  • SVN对比修改
  • SVN冲突解决

15.2、Git

  • 安装Git(win和mac系统两种环境)
  • 设置SSH
  • 常用命令
    • git init #把当前目录变成git可以管理的仓库
    • git clone git地址 #克隆项目
    • git add readme.txt #添加一个文件,也可以添加文件夹
    • git add -A #添加全部文件
    • git rm test.txt #删除一个文件,也可以删除文件夹
    • git commit -a -m “some commit” #提交修改
    • git status #查看是否还有未提交
    • git log #查看最近日志
    • git reset --hard HEAD^ #版本回退一个版本
    • git reset --hard HEAD^^ #版本回退两个版本
    • git reset --hard HEAD~100 #版本回退多个版本
    • git remote add origin +地址 #远程仓库的提交(第一次链接)
    • git push -u origin master #仓库关联
    • git push #远程仓库的提交(第二次及之后)
    • git fetch #从远程获取代码库
    • git tag xxx #打tag
    • git tag #显示所有tag
    • git push --tag #提交tag
    • git branch -a #显示所有分支
    • git checkout 分支名 #切换分支
    • git merge git分支 #合并分支

16、Python语言

16.1、用途

  • 制作工具

16.2、Python语言基础

  • 环境搭建
    • Windows
    • Linux
    • MacOS
  • 变量
    • 全局变量
    • 局部变量
    • 赋值
    • 多变量赋值
    • 数字
    • 字符串
    • 集合
    • 列表
    • 元组
    • 字典
  • 类型转换
    • int(x [,base])
    • long(x [,base] )
    • float(x)
    • str(x)
    • tuple(s)
    • list(s)
    • set(s)
    • dict(d)
    • chr(x)
  • 运算符
    • 算术运算符
    • 比较运算符
    • 赋值运算符
    • 逻辑运算符
    • 位运算符
    • 成员运算符
    • 身份运算符
  • 条件语句
    • if …: elif …: else:
  • 循环语句
    • while 循环
    • for 循环
    • 嵌套循环
    • break 语句
    • continue 语句
    • pass 语句
      -字符串
    • 字符串连接
    • 转义字符
    • 字符串运算符
    • 字符串格式化
    • 三引号
    • Unicode 字符串
    • 常用函数
      • string.find(str, beg=0, end=len(string))
      • string.format()
      • string.index(str, beg=0, end=len(string))
      • string.isdigit()
      • string.join(seq)
      • string.lower()
      • string.upper()
      • string.lstrip()
      • string.rstrip()
      • string.strip([obj])
      • string.split(str=“”, num=string.count(str))
      • string.startswith(obj, beg=0,end=len(string))
      • string.endswith(obj, beg=0, end=len(string))
      • string.replace(str1, str2, num=string.count(str1))
  • 列表
    • 创建
    • 访问
    • 遍历
    • 增删改查
    • 排序
    • 常用函数
      • len(list)
      • max(list)
      • min(list)
      • list.append(obj)
      • list.count(obj)
      • list.index(obj)
      • list.insert(index, obj)
      • list.pop([index=-1])
      • list.remove(obj)
      • list.reverse()
      • list.sort(cmp=None, key=None, reverse=False)
  • 元组
    • 创建
    • 访问
    • 连接组合
    • 删除整个元组
    • 常用函授
      • len(tuple)
      • max(tuple)
      • min(tuple)
      • tuple(seq)
  • 字典
    • 创建
    • 访问
    • 遍历
    • 增删改查
    • 常用方法
      • len(dict)
      • str(dict)
      • dict.clear()
      • dict.get(key, default=None)
      • dict.has_key(key)
      • dict.items()
      • dict.keys()
      • dict.values()
      • dict.setdefault(key, default=None)
  • 日期和时间
    • 获取当前时间
    • 获取格式化的时间
    • 格式化日期
    • 常用函数
      • time.time( )
      • time.localtime([secs])
      • time.sleep(secs)
  • 函数
    • 定义
    • 调用
    • 传参
    • 默认参数
    • 不定长参数
    • 匿名函数
    • lambda函数
    • return 语句
  • 模块
    • 创建模块
    • import 语句
    • from…import 语句
  • 文件IO
    • input 函数
    • open 函数
    • File 对象
      • close() 方法
      • write() 方法
      • read() 方法
      • tell() 方法
      • seek() 方法
    • 文件重命名
    • 文件删除
    • mkdir 函数
    • chdir 函数
    • rmdir 函数
  • 异常处理
    • 标准异常
    • 异常处理
    • 触发异常
    • 自定义异常
  • 面向对象
    • 创建类
    • self对象
    • 创建实例
    • 访问属性
    • 对象销毁
    • 继承
    • 方法重写
    • 基础重载方法
    • 运算符重载
  • 正则表达式
    • re.match 方法
    • re.search 方法
    • 检索
    • 替换
  • 多线程
    • 创建
    • 启动

17、打包工具

  • 打AssetBundle
  • 代码设置图标
  • 代码设置应用名称
  • 代码设置版本号
  • 代码设置闪屏
  • 代码设置分辨率
  • 代码设置横竖屏
  • 打整包工具
    • Windows平台
    • Android平台
    • iOS平台
  • 命令行打包
  • Jenkins自动化打包
    • Jenkins搭建
    • 创建任务
    • 执行命令行打包
    • 通知企业微信机器人
  • XCodeAPI
    • 导出XCode工程
    • 自动设置XCode工程参数
    • 生成ipa
  • IL2CPP
  • 支持64位系统
  • 谷歌AAB格式
    • 打包
    • 安装

18、实用工具

  • Everything
    • 快速搜索
  • Hash
    • 查看MD5
  • Snipaste
    • 截图
  • ScreenToGif
    • 录屏Gif
  • BCompare
    • 文件对比
  • HexEditor
    • 十六进制查看器
  • XMind
    • 思维导图
  • VirtualBox
    • 虚拟机
  • 7z
    • 文件压缩解压
  • Process Explorer
    • 超强任务管理器
  • PHP Study
    • 快速Web服务器
  • MuMu模拟器
    • 高性能多功能Android模拟器
  • AssetStudio
    • 逆向Unity资源
  • SecureCRT
    • Linux远程
  • TightVNC
    • MacOS远程
  • FlashFXP
    • FTP工具

19、探索

  • AR项目
  • VR项目
  • 机器学习 ML-Agents
  • 流体模拟

七、Unity中高级

在这里插入图片描述

1、Lua语言

1.1、八大基本数据类型

  • table
  • string
  • number
  • bool
  • nil
  • function
  • thread
  • userdata

1.2、注释

  • 单行注释
  • 多行注释

1.3、 变量

  • 全局变量
  • 局部变量

1.4、 循环

  • while
  • for
  • break
  • ipairs
  • pairs

1.5、 流程控制

  • if then end
  • elseif
  • else

1.6、 函数

  • function
  • 多返回值
  • 可变参数
  • 匿名函数
  • 闭包

1.7、运算符

  • 算数运算符
  • 关系运算符
  • 逻辑运算符
  • 其他运算符

1.8、 字符串

  • 字符串长度
  • 字符串拼接
  • 双引号单引号
  • 转义符
  • 字符串替换
  • 字符串查找
  • 字符串格式化
  • 字符串截取
  • 大小写转换

1.9、 数组

  • 数组长度
  • 增删改查
  • 遍历
  • 排序

1.10、 表table

  • 元素连接
  • 增删改查
  • 遍历
  • 排序

1.11、 元表metatable

  • 定义
  • 元方法
  • 设置元表
  • 获取元表
  • __index
  • __newindex
  • 禁止表被修改

1.12、 模块module

  • 定义
  • require

1.13、 协程

  • 创建
  • 启动
  • 挂起
  • 嵌套

1.14、 文件IO

  • 创建文件
  • 判断文件存在
  • 读文件
  • 写文件
  • 删除文件
  • 创建目录
  • 判断目录存在
  • 删除目录

1.15、 错误处理

  • pcall
  • xpcall

1.16、 垃圾回收

  • 机制
  • 流程

1.17、 面向对象

  • 类封装
  • 继承

1.18、 与C交互

  • loadlib
  • require

2、通信协议

2.1、ProtoBuf

  • 原理
  • 使用
  • 不同语言版本的ProtoBuf

2.2、sproto

  • 原理
  • 使用
  • 不同语言版本的sproto

3、接入SDK

3.1、Android Studio

  • Android Studio安装
  • JDK安装与环境变量配置
  • 下载Android SDK
  • Android Studio配置Android SDK
  • Android Studio配置JDK
  • 下载Gradle工具
  • 设置build.gradle
  • Java与SDK交互

3.2、XCode

  • 导入SDK包到XCode工程
  • Objective-C与SDK交互
  • plist配置权限
  • 添加SDK系统库

3.3、常见SDK

  • 微信SDK
  • 阿里支付SDK
  • 应用宝SDK
  • Bugly SDK
  • 高德地图SDK
  • 信鸽推送SDK
  • MSA SDK
  • 广点通SDK
  • 华为SDK
  • 小米SDK
  • OPPO SDK
  • VIVO SDK
  • BiliBili SDK
  • 谷歌SDK
  • Facebook SDK
  • Line SDK
  • 百度SDK
  • 九游SDK

3.4、Plugins目录结构

  • Android
    • libs
    • armeabi-v7a
    • armv8-64
    • x86
    • res
    • assets
  • iOS
    • .bundle
    • .framework
    • .h
    • .mm
    • .m
  • .dll

3.5、Android平台

  • .jar包
  • .aar包
  • .so包
  • AndroidManifest.xml
  • C#与java交互
  • C#与C/C++交互

3.6、iOS平台

  • C#与Objective-C交互

3.7、多SDK混接问题

  • SDK依赖冲突
  • 代码、资源冗余
  • 升级SDK麻烦
  • 聚合SDK

4、ToLua框架

  • 框架下载
  • 交叉编译tolua各个平台库
    • Windows
    • Android
    • iOS
    • MacOS
  • 框架接入
  • 资源管理器
  • 界面管理器
  • 网络管理器
  • 声音管理器
  • C#与Lua交互
  • 使用Lua编写业务逻辑
  • 拓展框架

5、热更新

5.1、版本号管理

  • app版本号
  • res版本号

5.2、热更内容

  • 代码热更
    • C#代码热更新
    • lua代码热更新
  • 资源热更
    • 配置
    • 预设
    • 纹理
    • 材质球
    • 声音
    • 其他资源文件

5.3、打包热更包

  • MD5
  • lua加密
  • 资源加密
  • 打AssetBundle
  • Zip压缩
  • 上传Web服务器

5.4、执行热更新

  • 获取更新列表
  • 判断版本号
  • 下载
  • MD5校验
  • 解压Zip
  • 加载AssetBundle
  • 文件解密

6、发行

  • 多渠道发行
  • 重签名
    • Android
    • iOS
  • 差异化
    • 渠道号
    • APP名字
    • APP图标
    • APP闪屏
    • APP Loading图
    • APP Logo
  • 应用市场
    • 开发者账号
    • 创建应用
    • 设置元数据
    • APP参数
    • 接入SDK
    • 联调
    • 提审
    • 上架
  • iOS企业签
  • iOS超级签
  • iOS企业版部署到Web服务器
    • plist
    • https服务器
    • itms-services协议

7、部署

  • 云服
    • 阿里云
    • 腾讯云
  • SSH远程
    • SecureCRT工具
  • 云盘
    • oss阿里云
    • cos腾讯云
  • Linux常用指令
    • cd
    • mv
    • ls -l
    • cp
    • rz -e
    • sz -e
    • ps -axj
    • df
    • top
    • history

八、Unity高级

在这里插入图片描述

1、设计模式

  • 简单工厂模式
  • 抽象工厂模式
  • 工厂方法模式
  • 策略模式
  • 单一职责原则
  • 开放-封闭原则
  • 依赖倒转原则
  • 装饰模式
  • 代理模式
  • 原型模式
  • 模板方法模式
  • 迪米特法则
  • 外观模式
  • 建造者模式
  • 观察者模式
  • 状态模式
  • 适配器模式
  • 备忘录模式
  • 组合模式
  • 迭代器模式
  • 单例模式
  • 桥接模式
  • 命令模式
  • 职责链模式
  • 中介者模式
  • 享元模式
  • 解释器模式
  • 访问者模式

2、游戏框架

  • 工程目录管理
  • 网络管理
  • 通信协议解决方案
  • UI解决方案
  • Lua框架
  • 多语言解决方案
  • 多渠道解决方案
  • 多SDK混接解决方案
  • 对象池管理
  • 资源加载解决方案
  • 热更新解决方案
  • 项目安全解决方案
  • 编辑器工具
  • 全局配置
  • 事件管理
  • 场景管理

3、性能优化

3.1、CPU

  • 运用对象池,避免重复实例化
  • 分帧运算,避免短时超负荷
  • 数据缓存,避免重复运算
  • 算法

3.2、 GPU

  • 使用多层次细节LOD
  • 使用光照贴图
  • 静态合批和动态合批
  • 简化着色器
  • 使用平台推荐的压缩格式
  • 减少模型面数
  • 减少贴图大小

3.3、内存

  • 模型区分高低模
  • 释放AssetBundle
  • 降低模型面数
  • 降低骨骼数量
  • 降低贴图大小

3.4、 包体

  • 压缩图片
  • 压缩音频
  • 压缩自带库文件
  • 拓展包
  • 分段下载

3.5、 网络

  • 数据流量优化

4、兼容、适配与稳定

  • 多架构CPU兼容
  • 奔溃率监控
  • 日志上报
  • Windows版本兼容
  • Android版本兼容
  • 分辨率适配
  • ADB调试
  • XCode调试

5、自动化测试

  • AirTest
    • 客户端下载

    • Poco-SDK

    • 设备连接

    • 编写脚本

      • 获取屏幕尺寸
      • 引用其他air脚本
      • 元素定位
      • 点击元素
      • 等待元素出现或消失
      • 拖动
      • 滑动
      • 连续滑动
      • 按住n秒拖动
      • 长按
      • 判断元素是否存在
      • 两指挤压收缩操作
      • 无效的操作异常
      • 节点或属性不存在异常
      • 等待超时异常
      • 对象已被清除异常
      • 自定义poco属性
    • 运行脚本

    • 生成报告

6、图形学与渲染

6.1、OpenGL

  • 渲染管线
  • 图元
  • Draw Call
  • 顶点着色器
  • 裁剪
  • 屏幕映射
  • 三角形设置
  • 三角形遍历
  • 片元着色器
  • 逐片元操作
  • 固定渲染管线
  • 可编程渲染管线
  • GLSL语言
  • 着色器编译
  • 光照模型
  • 模板测试
  • 深度测试
  • 融混
  • 帧缓存
  • 相机模式
  • 齐次坐标
  • 纹理映射
  • 程序式纹理
  • 噪声

6.2、Unity Shader

  • ShaderLab语言
  • 表面着色器
  • 顶点着色器
  • 片元着色器
  • Cg/HLSL语言
  • 点和矢量
  • 矩阵
    • 矩阵定义
    • 齐次坐标
    • 平移矩阵
    • 缩放矩阵
    • 旋转矩阵
  • 坐标空间
    • 模型空间
    • 世界空间
    • 观察空间
    • 裁剪空间
    • 屏幕空间
  • 标准光照模型
    • 环境光
    • 自发光
    • 漫反射
    • 高光反射
  • 逐顶点光照
  • 逐像素光照
  • 纹理
    • 常规纹理
    • 法线纹理
    • 渐变纹理
    • 遮罩纹理
  • 透明效果
    • 渲染顺序
    • 透明测试
    • 透明混合
    • 双面渲染
  • 屏幕后处理
    • 调整屏幕亮度
    • 调整屏幕饱和度
    • 调整屏幕对比度
    • 边缘检测(卷积)
    • 高斯模糊
    • Bloom效果
    • 运动模糊
  • 噪声
    • 消融效果
    • 水波纹效果
    • 全局雾效
  • 渲染技术优化
    • 动态批处理
    • 静态批处理
    • 共享材质
    • 减少顶点数
    • 模型LOD技术
    • 遮挡剔除
    • 减少实时光和阴影
    • 减少纹理大小
    • 利用分辨率缩放

6.3、ShaderGraph

  • 入门
    • Universal RP下载
    • 创建Pipeline Assets
    • 设置Pipeline Assets
    • 升级shader
    • 创建PBR Graph
    • 创建变量
    • 使用变量
    • 创建节点
    • 保存Graph文件
    • 创建材质球
    • 材质球设置shader
    • 材质球赋值给模型
    • 调整材质球变量
  • 案例
    • 模型裁切
    • 模型溶解
    • 边缘光效果
    • 卡通阴影色块效果
    • 水纹叠加
    • 积雪效果
    • 不锈钢效果
    • UV抖动效果
    • 顶点波动
    • 马赛克效果
    • 水球效果
    • 火焰效果
    • 旋涡效果
    • 闪电效果
    • 全息效果
    • 高斯模糊
    • 自发光
    • 粒子系统溶解效果
    • 物体靠近局部溶解效果
    • 2D描边效果
    • 子弹拖尾效果
    • 模型上涂鸦
    • 刮刮乐效果

7、代码安全

  • 代码混淆
  • dll加密
  • 重新编译mono
  • 辅助so库,hook
  • IL2CP
  • Lua代码加密

8、逆向

8.1、编译技术

  • 词法分析
  • 语法分析
  • 语义分析与处理
  • 符号表
  • 运行时存储组织
  • 优化
  • 目标代码生成

8.2、反编译技术

  • 逆向分析的各个阶段
    • 文件装载
    • 指令解码
    • 语义映射
    • 相关图构造
    • 过程分析
    • 类型分析
    • 结果输出
  • 逆向分析框架
    • 静态分析框架
    • 动态分析框架
    • 动静结合的分析框架
  • 指令系统
    • 机器指令
    • 汇编指令
  • 可执行文件
    • 文件格式
    • 文件头
    • 字符串表
    • 符号表

8.3、资源逆向

  • AssetStudio

8.4、C#逆向

  • ILSpy

8.5、C++逆向

  • IDA

8.6、java逆向

  • jd-gui
  • dex2jar

8.7、AndroidManifest逆向

  • AndroidStudio

9、算法

  • 复杂度分析:代码执行效率和资源消耗
  • 链表:LRU缓存淘汰算法
  • 栈:浏览器的前进和后退功能
  • 队列:有限资源池的请求排队
  • 尾递归:避免递归过深导致的堆栈溢出
  • 排序算法基础:从哪几个方面分析排序算法
  • O(n2)排序:为什么插入排序比冒泡排序更受欢迎
  • O(nlogn)排序:快速查找第K大元素
  • 线性排序:根据年龄给100万个用户排序
  • 排序优化:高性能通用排序函数
  • 二分查找:省内存快速查找
  • 二分查找的变体:快速定位IP地址对应的归属地
  • 哈希表:Word软件的单词拼写检查
  • 哈希表:打造一个工业级的哈希表
  • 位图:网页爬虫中的网址链接去重
  • 哈希算法:防止数据库脱库后用户信息泄露
  • 树和二叉树:什么样的二叉树适合用数组存储
  • 二叉查找树:相比哈希表,二叉查找树有何优势
  • 平衡二叉查找树:为什么红黑树如此受欢迎
  • 递归树:如何借助树求递归算法的时间复杂度
  • B 树:MySQL数据库索引是如何实现的
  • 堆:如何维护动态集合的值
  • 堆排序:为什么说堆排序没有快速排序快
  • 堆的应用:快速获取Top 10热门搜索关键词
  • 跳表:Redis中的有序集合类型
  • 并查集:路径压缩和按秩合并这两个优化是否冲突
  • 线段树:查找猎聘网中积分排在第K位的猎头
  • 树状数组:实现一个高性能、低延迟的实时排行榜
  • BF算法:编程语言中的查找、替换函数是怎样实现的
  • RK算法:借助哈希算法实现高效的字符串匹配
  • BM算法:文本编辑器中的查找和替换功能
  • Trie树:搜索引擎的搜索关键词提示功能
  • AC自动机:多模式串匹配实现敏感词过滤
  • 图的表示:存储微博、微信等社交网络中的好友关系
  • 深度优先搜索和广度优先搜索:如何找出社交网络中的三度好友关系
  • 拓扑排序:确定代码源文件的编译依赖关系
  • 单源短路径:地图软件计算出行路线
  • 启发式搜索:用A*算法实现游戏中的寻路功能
  • 小生成树:随机生成游戏中的迷宫地图
  • 流:解决单身交友联谊中的多匹配问题
  • 分治算法:大规模计算框架MapReduce中的分治思想
  • 回溯算法:从电影《蝴蝶效应》中学习回溯算法的核心思想
  • 动态规划:如何巧妙解决“双11”购物时的凑单问题
  • 动态规划:如何实现搜索引擎中的拼写纠错功能

九、管理与规范

1、svn管理

  • 分支管理
    • 拉分支
    • 分支合并
    • 冲突解决
    • SVN还原
    • SVN追溯
  • 账号管理
  • 权限管理

2、策划规范

  • 文案格式规范
  • office软件版本统一
  • 需求工作流规范
  • 文档存储规范
  • 配置表字段规范
  • 原型设计图规范

3、美术规范

  • 资源目录规范
  • 资源命名规范
  • 预设制作规范
    • 预设节点规范
    • 预设组件规范
    • 预设模板
    • 预设继承
  • 模型结构规范
    • 面数规范
    • 节点结构规范
    • 尺寸规范
    • 贴图规范

4、技术文档与沉淀

  • 载体
    • WIKI
    • Confluence
    • 技术博客
  • 内容
    • 模块接口
    • 配置说明
    • GM命令
    • 技术解决方案
    • 规范说明
    • 工具说明

十、补充:数学基础

1、集合

  • 集合基础
  • 容斥原理

2、函数

  • 定义域、值域
  • 函数的性质
    • 单调性
    • 奇偶性
    • 周期性
    • 凹凸性
    • 连续性
    • 可导性
    • 有界性
    • 收敛性
  • 初等函数
    • 一次、二次、三次函数
    • 幂函数
    • 双勾函数
    • 指数、对数函数
  • 函数的迭代
  • 函数方程

3、三角函数

  • 三角函数图像与性质
  • 三角函数运算
  • 三角恒等式、不等式、最值
  • 正弦、余弦定理
  • 反三角函数
  • 三角方程

4、向量

  • 向量运算
  • 向量坐标、数量积

5、数列

  • 数列通项公式求解
  • 换元法
  • 特征根法
  • 不动点法,迭代法
  • 数学归纳法,递归法

6、不等式

  • 解不等式
  • 均值不等式
  • 重要不等式
    • 柯西不等式
    • 排序不等式
    • 契比雪夫不等式
    • 赫尔德不等式
    • 权方和不等式
    • 幂平均不等式
    • 琴生不等式
    • Schur不等式
    • 嵌入不等式
    • 卡尔松不等式
  • 证明不等式的常用方法
    • 利用重要不等式
    • 调整法
    • 归纳法
    • 切线法
    • 展开法
    • 局部法
    • 反证法

7、解析几何

  • 直线与二次曲线方程
  • 直线与二次曲线性质
  • 参数方程
  • 极坐标系

8、立体几何

  • 空间中元素位置关系
  • 空间中距离和角的计算
  • 棱柱、棱锥、四面体性质
  • 体积、表面积
  • 球、球面
  • 三角面
  • 空间向量

9、排列、组合、概率

  • 排列组合的基本公式
    • 加法、乘法原理
    • 无重复的排列组合
    • 可重复的排列组合
    • 圆排列、项链排列
    • 错位排列数
  • 计数方法
    • 映射法
    • 容斥原理
    • 递推法
    • 折线法
    • 算两次法
    • 母函数法
  • 证明组合恒等式的方法
    • Abel法
    • 算子方法
    • 组合模型法
    • 归纳与递推方法
    • 母函数法
    • 组合互逆公式
  • 二项式定理
  • 概率
    • 独立事件概率
    • 互逆事件概率
    • 条件概率
    • 全概率公式、贝叶斯公式
    • 现代概率,几何概率
  • 数学期望

10、极限、导数

  • 极限定义,求法
  • 导数定义,求法
  • 导数的应用
    • 判断单调性
    • 求最值
    • 判断凹凸性
  • 洛必达法则
  • 偏导数

11、复数

  • 复数概念及其运算
  • 复数的几个形式
    • 复数的代数形式
    • 复数的三角形式
    • 复数的指数形式
    • 复数的几何形式
  • 复数的几何意义,复平面
  • 复数与三角,复数与方程
  • 单位根及应用

12、平面几何

  • 几个重要的平面几何定理
    • 梅勒劳斯定理
    • 塞瓦定理
    • 托勒密定理
    • 西姆松定理
    • 斯特瓦尔特定理
    • 张角定理
    • 欧拉定理
    • 九点圆定理
  • 圆幂,根轴
  • 三角形的巧合点
    • 内心
    • 外心
    • 重心
    • 垂心
    • 旁心
    • 费马点
  • 调和点列
  • 圆内接调和四边形
  • 几何变换
    • 平移变换
    • 旋转变换
    • 位似变换
    • 对称变换
    • 反演变换
    • 配极变换
  • 几何不等式
  • 平面几何常用方法
    • 纯几何方法
    • 三角法
    • 解析法
    • 复数法
    • 向量法
    • 面积法

13、多项式

  • 多项式恒等定理
  • 多项式的根及应用
    • 韦达定理
    • 虚根承兑原理
  • 多项式的整除,互斥
  • 拉格朗日插值多项式
  • 差分多项式
  • 牛顿公式
  • 单位根
  • 不可约多项式,最简多项式

14、数学归纳法

  • 第一数学归纳法
  • 第二数学归纳法
  • 螺旋递归法
  • 跳跃递归法
  • 反向递归法
  • 最小数原理

15、初等数论

  • 整数,整除
  • 同余
  • 素数,合数
  • 算数基本定理
  • 费马小定理,欧拉定理
  • 拉格朗日定理,威尔逊定理
  • 裴蜀定理
  • 平方数
  • 中国剩余定理
  • 高斯函数
  • 指数,阶,原根
  • 二次剩余定理
    • Legendre 符号
    • Gauss 二次互反律
  • 不定方程
    • 不定方程解法
      • 同余法
      • 构造法
      • 无穷递降法
      • 反证法
      • 不等式估算法
      • 配方发,因式分解法
    • 重要不等方程
      • 一次不等方程(组)
      • 勾股方程
      • Pell 方程
  • p 进制进位制,p 进制表示

16、组合问题

  • 组合计数问题
  • 组合恒等式,不等式
  • 存在性问题
  • 组合极值问题
  • 操作变换,对策问题
  • 组合几何
    • 凸包
    • 覆盖
    • 分割
    • 整点
  • 图论
    • 图的定义,性质
    • 简单图,连同图
    • 完全图,树
    • 二部图,k 部图
    • 托兰定理
    • 染色与拉姆塞问题
    • 欧拉与哈密顿问题
    • 有向图,竞赛图
  • 组合方法
    • 映射法,对应法,枚举法
    • 算两次法
    • 递推法
    • 抽屉原理
    • 极端原理
    • 容斥原理
    • 平均值原理
    • 介值原理
    • 母函数法
    • 染色方法
    • 赋值法
    • 不变量法
    • 反证法
    • 构造法
    • 数学归纳法
    • 调整法
    • 最小数原理
    • 组合计数法

十一、完毕

好了,肝了两天,我已经把我能想到的都写出来了,后面想到其他有补充的话我再继续添加吧,希望可以帮助到学习Unity的同学。

我是林新发:https://blog.csdn.net/linxinfa
原创不易,若转载请注明出处,感谢大家~
喜欢我的可以点赞、关注、收藏,如果有什么技术上的疑问,欢迎留言或私信,拜拜~

  • 605
    点赞
  • 2892
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 87
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 87
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林新发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值