Unity(入门、中级、中高级、高级)

Unity

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”购物时的凑单问题
动态规划:如何实现搜索引擎中的拼写纠错功能

你可能感兴趣的:(Unity自学之路,unity,游戏引擎)