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

【游戏开发指路】Unity学习路线,三万字大纲(面试题大纲 | 知识图谱 | Unity游戏开发工程师)【游戏开发指路】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
原创不易,若转载请注明出处,感谢大家~
喜欢我的可以点赞、关注、收藏,如果有什么技术上的疑问,欢迎留言或私信,拜拜~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149379.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月16日 下午8:16
下一篇 2022年6月16日 下午8:16


相关推荐

  • PXE启动配置及原理

    PXE启动配置及原理利用PXE启动可以实现为批量计算机自动部署操作系统,在启动之前需要设置终端的BIOS选项。进入BIOS之后,在BOOT选项中将1stBootDevices设成[Network:RealtekBo];在Advanced选项中进入OnboardDevicesConfiguration,将其中的选项设置成OnboardPCIEGbeLAN[Enabled];LANOptionRom

    2022年6月16日
    41
  • ntp校时服务器(NTP校时器)介绍

    ntp校时服务器(NTP校时器)介绍酷鲨科技作为一家时间同步领域科研公司 今天简单介绍一下 ntp 校时服务器 其实大部分人认为 ntp 校时服务器是不同于 NTP 网络时间同步服务器 其实不然 基本是同一种产品 只是叫法不同 ntp 校时服务器页可以称为 NTP 校时器 ntp 校时服务器主要作用 ntp 校时服务器主要还是帮助不同网络设备之间进行时间同步 然而 同步 概念在通信领域中频率的同步 或者网络中每个节点的时钟频率与相位的同步 并且在规定的标准误差之间 其实网站时间的同步并没有解决 ntp 校时服务器的功能也就是让网络中的每一个时钟节点 频率 每一个具

    2026年3月16日
    2
  • 三层交换机 ospf_三层交换机实验报告

    三层交换机 ospf_三层交换机实验报告03-三层交换机的OSPF实验

    2022年4月21日
    87
  • nginx修改默认端口方法

    nginx修改默认端口方法1 进入 nginx conf 文件 2 修改 listen 后的默认端口号改为想改的端口号 如下图 3 设置防火墙允许通过修改的端口号 1 firewall cmdzone publicadd port 90 tcppermanent firewall cmdreload3 firewall cmdquery port 90 tcp4 在基于 CentOS 或 RHEL 的 Linux 发行版中 您需要安装 policycoreut 软件包并添加 SELinux 对 N

    2026年3月18日
    2
  • MODIS数据的简介和下载(二)——MODIS数据下载方式(FTP)「建议收藏」

    MODIS数据的简介和下载(二)——MODIS数据下载方式(FTP)「建议收藏」前一篇我们已经介绍了MODIS数据的简介、参数以及相关的典型应用。这一篇我们来介绍下MODIS数据的下载方式。当然这边主要是介绍国外网站的下载方式,国内网站的普遍是在地理空间数据云和遥感集市下载。国外网站(NASA官网)下载方式主要介绍三种。本篇主要针对第一种方式,基于完整的一景影像下载的过程(FTP工具)。后面一篇更新的是基于MODISWebService的客户端下载的方式(Matlab和R)

    2022年5月30日
    73
  • Java取余和取模

    Java取余和取模抛开高级语言的实现,取余运算和取模运算本身并不完全一致,区别在于对负整数进行取商时操作不同。虽然这样说,但是取余运算和取模运算的公式都一样。对于x和y两个整数(int),通过以下两个操作获取余数或模数:step1、求商:intz=x/ystep2、求余数或模数:intresult=x-y*z它们的差别在于,如果z的值…

    2022年4月29日
    55

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号