Unity游戏开发前置知识
Posted 微笑小星
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity游戏开发前置知识相关的知识,希望对你有一定的参考价值。
本文适合有一定C#基础的初学者。
设计模式
含义:帮助我们降低对象之间的耦合度常用的方法称为设计模式。使用设计模式是为了可重用代码,让代码更容易被其他人所理解,保证代码可靠性,使代码编制真正工程化,这是软件工程的基石。
分类:
创建型模式:工厂方法模式、抽象工厂模式、单例模式、建造者模式、组合模式、原型模式。
结构型模式:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
单例模式
含义:一个类只有一个实例,只在内部实例一次,外部无法实例化,全局唯一。一般应用于各种管理器,如角色管理器、声音管理器,场景管理器。
public class MySingleton
private static MySingleton __instance;
public static MySingleton instance
get
if(__instance == null)
__instance = new MySIngleton();
public MySingleton()
Debug.Log("执行构造函数");
public void Show()
Debug.Log("show");
MySingleton.instance.Show();
观察者模式
含义:可称为发布/订阅模式,定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象(多播委托)。主题对象发生变化时,它们能够自动更新自己,通常用作实现事件处理系统。
Using System;
using UnityEngine;
public class Animal
protected string Name;
public Animal(string name)
this.Name = name;
public virtual void Run()
public class Cat:Animal
public Action actions; //发布者
public Cat(string name):base(name)
public void Coming(/*MouseA mouseA,MouseB mouseB,MouseC mouseC*/)
Debug.Log(Name + "猫来了");
//mouseA.Run();
//mouseB.Run();
//mouseC.Run();
this.Run();
if(actions!= null)
actions();
public override void Run()
Debug.Log(Name + "追老鼠");
public class Mouse:Animal
public Mouse(string name,Cat cat):base(name)
cat.actions += this.Run; //订阅者
public override void Run()
Debug.Log(Name + "老鼠跑");
public class Visit:monoBehaviour
void Start()
Cat cat = New Cat("小野猫");
Mouse mouseA = new Mouse("mouseA",cat);
Mouse mouseB = new Mouse("mouseB",cat);
Mouse mouseC = new Mouse("mouseC",cat);
// 在老鼠数量不确定的情况下,这样的设计是不合理的
//cat.Coming(mouseA,mouseB,mouseC);
// 这样合理
cat.Coming();
简单工厂/工厂/抽象工厂
简单工厂模式:又叫静态工厂方法模式,由一个工厂对象决定创建出哪一种产品类的实例。只生产一个品类的产品,在工厂中动态创建。
工厂模式:避免简单工厂模式中,新增产品品牌(类型)时,直接修改工厂类。通过多个工厂创建不同的产品。
抽象工厂模式:解决系列产品问题,生产多种产品。
简单工厂模式:
namespace Factor
public abstract class AbstractMouse
public abstract void Print();
using UnityEngine;
namespace Factor
public class DellMouse: AbstractMouse
public override void Print()
Debug.Log("生产了一个Dell鼠标");
using UnityEngine;
namespace Factor
public class HpMouse: AbstractMouse
public override void Print()
Debug.Log("生产了一个Hp鼠标");
namespace Factor
public class SampleFactor
public AbstractMouse CreateMouse(MouseType emMouseType)
AbstractMouse mouse = null;
switch(emMouseType)
case MouseType.HpMouse:
mouse = new HpMouse();
break;
case MouseType.DellMouse:
mouse = new DellMouse();
break;
default:
break;
return mouse;
using UnityEngine;
using Factor;
public enum MouseType
None,
DellMouse,
HpMouse,
public class FactorMain:MonoBehaviour
void Start()
RunNormal();
RunSampleFactor();
void RunNormal()
DellMouse dellMouse = new DellMouse();
dellMouse.Print();
HpMouse hpMouse = new HpMouse();
hpMosue.Print();
// 外界不需要关注具体的子类对象
void RunSampleFactor()
SampleFactor factor = new SampleFactor();
AbstactMouse dellMouse = factor.CreateMouse(MouseType.DellMouse);
dellMouse.Print();
AbstactMouse hpMouse = factor.CreateMouse(MouseType.HpMouse);
hpMouse.Print();
工厂模式:
namespace Factor
public abstract class FactorBase
public abstract AbstractMouse CreateMouse();
namespace Factor
public class DellFactor:FactorBase
public override AbstractMouse CreateMouse()
return new DellMouse();
namespace Factor
public class HpMouse:FactorBase
public override AbstractMouse CreateMouse()
return new HpMouse();
public class FactorMain:MonoBehaviour
void Start()
RunFactor();
--snip--
void RunFactor()
DellFactor dellFactor = new DellFactor();
AbstractMouse dellmouse = dellFactor.CreateMouse();
dellMouse.Print();
HpFactor hpFactor = new HpFactor();
AbstractMouse hpmouse = hpFactor.CreateMouse();
hpmouse.Print();
工厂模式的好处在于当新增一个类的时候我们不会对原来的代码进行修改,只新增类本身及其工厂。
抽象工厂模式: 可以生产多个类别产品。
namespace Factor
public abstract class AbstractKeyBoard
public abstract void Print();
namespace Factor
public class DellKeyBoard:AbstractKeyBoard
public override void Print()
Debug.Log("Dell键盘");
namespace Factor
public class HpMouse:AbstractKeyBoard
public override void Print()
Debug.Log("hp键盘");
namespace Factor
public abstract class FactorBase
public abstract AbstractMouse CreateMouse();
public abstract AbstractKeyBoard CreateKeyBoard();
namespace Factor
public class DellFactor:FactorBase
public override AbstractMouse CreateMouse()
return new DellMouse();
public override AbstractKeyBoard CreateKeyBoard()
return new DellKeyBoard();
namespace Factor
public class HpMouse:FactorBase
public override AbstractMouse CreateMouse()
return new HpMouse();
public override AbstractKeyBoard CreateKeyBoard()
return new HpKeyBoard();
--snip--
public class FactorMain:MonoBehaviour
void Start()
RunAbstractFactor();
--snip--
void RunAbstractFactor()
DellFactor dellFactor = new DellFactor();
AbstractMouse dellmouse = dellFactor.CreateMouse();
dellMouse.Print();
AbstractKeyboard dellKeyBoard = dellFactor.CreateKeyBoard();
dellKeyBoard.Print();
HpFactor hpFactor = new HpFactor();
AbstractMouse hpmouse = hpFactor.CreateMouse();
hpmouse.Print();
AbstractKeyboard hpKeyBoard = hpFactor.CreateKeyBoard();
hpKeyBoard .Print();
适配器模式
概念:可以用同一种方式调用不同平台上的同一个功能。
namespace Adaptor
public class androidLine
public void AndroidCharge()
Debug.Log("借助Android数据线充电中");
namespace Adaptor
public class iosLine
public void IOSCharge()
Debug.Log("借助IOS数据线充电中");
namespace Adaptor
public enum AdaptorType
None,
Android,
IOS,
public interface IAdaptor
void Charge(AdaptorType adaptorType);
public class Adaptor:IAdaptor
AndroidLine androidLine = new AndroidLine();
IOSLine iosLine = new IOSLine();
public void Charge(AdaptorType adaptorType)
if(adaptorType == AdaptorType.Android)
androidLine.AndroidCharge();
else if(adaptorType == AdaptorType.IOS)
iosLine.IOSCharge();
namespace Adaptor
public class AdaptorMain"MonoBehaviour
void Start()
// 用的时候统一调用接口即可
IAdaptor adaptor = new Adaptor();
adaptor.Charge(AdaptorType.Android);
adaptor.Charge(AdaptorType.IOS);
注意:考虑到如果还有许多代码的情况下,这里接口用于拓展原始类不足的功能。
IO操作
C#字符串
参考:https://www.runoob.com/csharp/csharp-string.html
举例:
public class StringTest
void Start()
Test1();
void Test1()
string str1 = "XIAOXING";
string str2 = "xiaoxing";
Debug.Log(str1.Length); // 长度
Debug.Log(string.Compare(str1,str2));//相等输出整形0,不等输出1
Debug.Log(string.Concat(str1,str2));//拼接
Debug.Log(string.Format("name:0 age:1","张三",14))//格式化输出
Debug.Log(str1.Contains("I"));//判断是否存在目标字符串
Debug.Log(str1.IndexOf("I"));//字符串第一次出现的索引
string [] array = str1.Split(new char[] 'G');//字符串切割
StringBuilder的使用
参考博客:https://blog.csdn.net/sibaison/article/details/72356393
用途:创建新的String的系统开销可能非常安规,如果要修改字符串而不创建新的对象,可以用到这个类。
public class StringBuilderTest
void Start()
Test1();
void Test1()
stringBuilder sb = new StringBuilder("Hello World",25);//内容和最大长度
Debug.Log(sb.Length + sb.capacity); //长度+容量
sb = sb.Append("What a beautiful day!"); // 添加内容
Debug.Log(sb.ToString());
文件读写
参考链接:http://c.biancheng.net/csharp/file-io.html
using UnityEngine;
public class FileStreamTest:MonoBehaviour
void CreateFile()
string path = @"E:\\WorkSpace\\Project\\Assets\\Resources\\student.txt";
FileStream fileStream = new FileStream(path,FileMode.OpenOrCreate,FileAccess.ReadWrite,FileShare.ReadWrite);
string msg = "1710026"
byte[] bytes = Encoding.UTF8.GetBytes(msg);//字符串转换为字节数组
fileStream.Write(bytes,0,bytes.Length);
fileStream.Flush();//刷新缓冲区
fileStream.Close();//关闭流
void ReadFile()
string path = @"E:\\WorkSpace\\Project\\Assets\\Resources\\student.txt";
if(File.Exists(path))
FileStream fileStream = new FileStream(path,FileMode.Open,FileAccess.Read);
byte[] bytes = new byte(fileStream.Length);
fileStream.Read(bytes,0,bytes.Length);
string s = Encoding.UTF8.GetString(bytes);
Debug.Log(s)
fileStream.Close();
else
Console.WriteLine("您查看的文件不存在");
void WriteAndRead //另一种方法
// 要写入文件中的数据
string[] str = new string[]
"C语言中文网",
"http://c.biancheng.net/",
"C# 教程"
;
// 创建 StreamWriter 类的对象
StreamWriter file = new StreamWriter("demo.txt");
// 将数组中的数据写入文件
foreach(string s in str)
file.WriteLine(s);
file.Close();
// 读取文件中的内容
string line = "";
StreamReader readfile = new StreamReader("demo.txt");
while((line = readfile.ReadLine()) != null)
Console.WriteLine(line);
readfile.Close();
Console.ReadKey();
用Directory和DirectoryInfo操作文件夹
参考链接:http://c.biancheng.net/csharp/directory.html
一个是静态操作,一个是创建对象后操作
string strDir = @"E:\\"
Directory.CreateDirectory(strDir);
Directory.Exists(strDir); //判断文件夹是否存在
Directory.Delete(strDir); //删除文件夹,如果有子文件夹需要加参数true
Directory.Move(strDir,@"D:\\");//移动文件夹
DirectoryInfo directoryInfo = new DirectoryInfo(strDir);
directoryInfo.Create(); //创建文件夹
directoryInfo.CreateSubdirectory("code-1"); //创建子文件夹
directoryInfo.Delete(); //删除文件夹,如果有子文件夹需要加参数true
directoryInfo.MoveTo("D:\\"); // 移动文件夹
数据结构
数组
含义:数组是用来储存数据的集合,元素类型相同,固定长度,顺序集合。
int[] array1 = new int[3];
int[] array2 = new int[3]1,2,3;
int[] array3 = 1,2,3,4,5;
array1[0] = 5; //赋值
Debug.Log(array1[0]); //读取
foreach(var v in array2)
Debug.Log(v);
动态数组
动态数组会自动调整大小,可以在指定位置添加删除项目,允许在列表中动态分配内存。
ArrayList arraylist1 = new ArrayList();
arraylist1.Add(45); //添加一个数据
int[] array3 = 1,2,3,4,5;
arraylist1.AddRange(array3); //添加一组数据
arraylist1.Clear(); //清空
arraylist1.Contains(12); //判断是否包含特定元素
arraylist1.IndexOf(12); //返回第一次出现的元素索引,没有返回-1
arraylist1.Insert(3,66); //索引+插入元素
arraylist1.Remove(12); // 删除第一次出现的元素
arraylist1.Reverse(); //翻转元素
arraylist1一、前言二、我的大学 三、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、多项式
- 多项式恒等定理
- 多项式的根及应用
- 韦达定理
- 虚根承兑原理
- 多项式的整除,互斥
- 拉格朗日插值多项式
- 差分多项式
- 牛顿公式
以上是关于Unity游戏开发前置知识的主要内容,如果未能解决你的问题,请参考以下文章
#yyds干货盘点# 100个 Unity小知识点 | Unity中常用的几种单例写法