IT技术之家

首页 > iOS

iOS

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

发布时间:2022-10-24 17:05:46 iOS 0次 标签:unity 学习 游戏引擎
【游戏开发指路】Unity学习路线,三万字大纲(面试题大纲 | 知识图谱 | Unity游戏开发工程师)...

文章目录

一、前言二、我的大学三、Unity学前1、C#基础1.1、数据类型1.2、变量1.3、常量1.4、运算符1.5、判断1.6、循环1.7、数组1.8、枚举1.9、字符串1.10、命名空间1.11、类1.12、结构体1.13、接口1.14、方法1.15、封装1.16、继承1.17、多态性1.18、运算符重载1.19、IO操作1.20、预处理1.21、异常处理 2、C#进阶2.1、Attribute特性2.2、反射2.3、属性2.4、索引器2.5、委托2.6、事件2.7、集合2.8、泛型2.9、匿名方法2.10、不安全代码2.11、正则表达式2.12、多线程 四、Unity入门1、Unity的安装与激活1.1、中国版与国际版1.2、Unity下载1.3、Unity激活 2、Unity社区2.1、中文手册2.2、技术专栏2.3、技术问答2.4、中文课堂2.5、官方Bilibili2.6、资源商店 3、IDE安装3.1、Windows3.2、MacOS 4、认识编辑器4.1、视图面板4.2、常用菜单 5、工程目录结构5.1、Assets目录5.2、ProjectSettings目录5.3、UserSettings目录5.4、Library目录 6、图片7、模型8、材质球9、声音10、预设11、GameObject12、Transform13、运行测试14、Windows打包 五、Unity初级1、C#脚本2、UGUI2.1、UGUI基础组件2.2、UGUI实操 3、引擎常用组件3.1、Audio组3.2、Effects组3.3、Event组3.4、Layout组3.5、Mesh组3.6、Miscellaneous组3.7、Nevigation组3.8、Physics2D组3.9、Physics组3.10、Rendering组 4、发布4.1、基础设置4.2、平台发布 5、编辑器拓展5.1、拓展Project视图5.2、拓展Hierarchy视图5.3、拓展Inspector视图5.4、拓展Scene视图5.5、拓展顶部菜单 六、Unity中级1、UGUI案例2、简单物理2.1、刚体2.2、碰撞2.3、触发器2.4、物理材质2.5、射线2.6、弹簧 3、动画4、粒子系统5、寻路导航6、Json7、二维码8、插值缓动9、Zip压缩与解压10、Behavior Designer11、Cinemachine12、TimeLine13、Tilemap14、ProBuilder15、版本管理15.1、SVN15.2、Git 16、Python语言16.1、用途16.2、Python语言基础 17、打包工具18、实用工具19、探索 七、Unity中高级1、Lua语言1.1、八大基本数据类型1.2、注释1.3、 变量1.4、 循环1.5、 流程控制1.6、 函数1.7、运算符1.8、 字符串1.9、 数组1.10、 表table1.11、 元表metatable1.12、 模块module1.13、 协程1.14、 文件IO1.15、 错误处理1.16、 垃圾回收1.17、 面向对象1.18、 与C交互 2、通信协议2.1、ProtoBuf2.2、sproto 3、接入SDK3.1、Android Studio3.2、XCode3.3、常见SDK3.4、Plugins目录结构3.5、Android平台3.6、iOS平台3.7、多SDK混接问题 4、ToLua框架5、热更新5.1、版本号管理5.2、热更内容5.3、打包热更包5.4、执行热更新 6、发行7、部署 八、Unity高级1、设计模式2、游戏框架3、性能优化3.1、CPU3.2、 GPU3.3、内存3.4、 包体3.5、 网络 4、兼容、适配与稳定5、自动化测试6、图形学与渲染6.1、OpenGL6.2、Unity Shader6.3、ShaderGraph 7、代码安全8、逆向8.1、编译技术8.2、反编译技术8.3、资源逆向8.4、C#逆向8.5、C++逆向8.6、java逆向8.7、AndroidManifest逆向 9、算法 九、管理与规范1、svn管理2、策划规范3、美术规范4、技术文档与沉淀 十、补充:数学基础1、集合2、函数3、三角函数4、向量5、数列6、不等式7、解析几何8、立体几何9、排列、组合、概率10、极限、导数11、复数12、平面几何13、多项式14、数学归纳法15、初等数论16、组合问题 十一、完毕

一、前言

嗨,大家好,我是新发。
有不少同学私信和评论让我讲讲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特性

预定义特性 AttributeUsageConditionalObsolete 自定义特性 声明构建应用

2.2、反射

概念原理用途优缺点使用

2.3、属性

get/set访问器抽象属性

2.4、索引器

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

2.5、委托

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

2.6、事件

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

2.7、集合

ArrayListHashtableSortedListStackQueueBitArray

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 StudioVS CodeSublime

3.2、MacOS

VS CodeXCodeSublime

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.LoadAssetDatabase.LoadAssetAtPathAssetBundle.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 生命周期 AwakeOnEnableStartUpdateFixUpdateLateUpdateOnDisableOnDestroy 打印日志断点调试

2、UGUI

2.1、UGUI基础组件

TextImageRawImageButtonToggleSliderScrollbarDropdownInputFieldCanvasPanelScrollView

2.2、UGUI实操

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

3、引擎常用组件

3.1、Audio组

AudioSourceAudioListener

3.2、Effects组

ParticleSystemLineRendererTrailRenderer

3.3、Event组

EventSystemEventTriggerGraphicRaycaster

3.4、Layout组

RectTransformCanvasCanvasGroupCanvasScalerAspectRatioFitterContentSizeFitterGridLayoutGroupHorizontalLayoutGroupVerticleLayoutGroupLayoutElement

3.5、Mesh组

MeshFilterMeshRendererSkinnedMeshRendererTextMeshPro-Text

3.6、Miscellaneous组

AnimatorAnimation

3.7、Nevigation组

NavMeshAgentNavMeshObstacle

3.8、Physics2D组

Rigidbody2DBoxCollider2DCapsuleCollider2DCircleCollider2DCompositeCollider2DEdgeCollider2D

3.9、Physics组

RigidbodyBoxColliderCapsuleColliderSphereColliderCharacterControllerTerrainCollider

3.10、Rendering组

CameraCanvasRendererSpriteRendererSkyboxSortingGroupLight

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物体 OnDrawGizmosOnDrawGizmosSelected 画GUI [CustomEditor(typeof(Camera))]OnSceneGUIHandles

5.5、拓展顶部菜单

带勾选的菜单 [MenuItem(“MenuTest/Test”, false, 3)]Menu.GetCheckedMenu.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、动画

AnimatorAnimation状态机变量动画融合状态切换混合树

4、粒子系统

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

5、寻路导航

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

6、Json

LitJson库构建JsonDataJsonData与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 #打taggit tag #显示所有taggit push --tag #提交taggit branch -a #显示所有分支git checkout 分支名 #切换分支git merge git分支 #合并分支

16、Python语言

16.1、用途

制作工具

16.2、Python语言基础

环境搭建 WindowsLinuxMacOS 变量 全局变量局部变量赋值多变量赋值数字字符串集合列表元组字典 类型转换 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、八大基本数据类型

tablestringnumberboolnilfunctionthreaduserdata

1.2、注释

单行注释多行注释

1.3、 变量

全局变量局部变量

1.4、 循环

whileforbreakipairspairs

1.5、 流程控制

if then endelseifelse

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、 错误处理

pcallxpcall

1.16、 垃圾回收

机制流程

1.17、 面向对象

类封装继承

1.18、 与C交互

loadlibrequire

2、通信协议

2.1、ProtoBuf

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

2.2、sproto

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

3、接入SDK

3.1、Android Studio

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

3.2、XCode

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

3.3、常见SDK

微信SDK阿里支付SDK应用宝SDKBugly SDK高德地图SDK信鸽推送SDKMSA SDK广点通SDK华为SDK小米SDKOPPO SDKVIVO SDKBiliBili SDK谷歌SDKFacebook SDKLine SDK百度SDK九游SDK

3.4、Plugins目录结构

Android libsarmeabi-v7aarmv8-64x86resassets iOS .bundle.framework.h.mm.m .dll

3.5、Android平台

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

3.6、iOS平台

C#与Objective-C交互

3.7、多SDK混接问题

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

4、ToLua框架

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

5、热更新

5.1、版本号管理

app版本号res版本号

5.2、热更内容

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

5.3、打包热更包

MD5lua加密资源加密打AssetBundleZip压缩上传Web服务器

5.4、执行热更新

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

6、发行

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

7、部署

云服 阿里云腾讯云 SSH远程 SecureCRT工具 云盘 oss阿里云cos腾讯云 Linux常用指令 cdmvls -lcprz -esz -eps -axjdftophistory

八、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库,hookIL2CPLua代码加密

8、逆向

8.1、编译技术

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

8.2、反编译技术

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

8.3、资源逆向

AssetStudio

8.4、C#逆向

ILSpy

8.5、C++逆向

IDA

8.6、java逆向

jd-guidex2jar

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、技术文档与沉淀

载体 WIKIConfluence技术博客 内容 模块接口配置说明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
原创不易,若转载请注明出处,感谢大家~
喜欢我的可以点赞、关注、收藏,如果有什么技术上的疑问,欢迎留言或私信,拜拜~