U2L4——Vector3向量系列
U2L4——Vector3向量系列
Vector3
对于Vector3,我们已经在Vector3基础介绍了这个结构体,它的构造方法,成员变量,基本计算,常用坐标或单位向量和计算两点距离的方法
在这里我们将进一步介绍它
Vector3向量必备知识
Vector3向量必备知识
向量模长和单位向量
向量模长和单位向量(距离,方向)
向量加减乘除
向量加减乘除的几何意义(位置平移和向量计算,模长放大缩小)
向量点乘
向量点乘(判断对象的方位,计算两个向量之间的夹角)
向量叉乘
向量叉乘(得到一个平面的法向量,得到两个向量之间的左右位置关系)
向量插值运算
向量插值计算(用于逐帧缓动)
U2L3——坐标系
U2L3——坐标系
本章代码关键字
123456789101112131415161718192021222324252627282930//世界坐标系this.transform.position; //对象相对于世界坐标系的位置的属性this.transform.rotation; //对象相对于世界坐标系的旋转角度的属性,用四元数表示this.transform.eulerAngles; //游戏对象相对于世界坐标系的角度的属性,用欧拉角表示this.transform.lossyScale; //游戏对象相对于世界坐标系的缩放大小//物体坐标系this.transform.localPosition; //对象相对于父对象坐标系的位置的属性this.transform.localEulerAngles; //对象相对于父对象的坐标系的角度的属性,用欧拉角表示,这里得到的角度范围一定是0~360this.transform.localRotation; ...
U2L2——Mathf三角函数
U2L2——Mathf三角函数
Mathf类包含了计算三角函数的方法
注意:Mathf中的三角函数相关函数,传入的函数一定是需要弧度值!!! (180°=1π)
三角函数的相关知识
三角函数是基本初等函数之一 ,
是以角度(数学上最常用弧度制,下同)为自变量,角度对应任意角终边与单位圆交点坐标或其比值为因变量的函数。
也可以等价地用与单位圆有关的各种线段的长度来定义。
三角函数(数学名词)_百度百科 (baidu.com)
基本函数
英文
缩写
表达式
语言描述
正弦函数
sine
sin
a/c
∠A的对边比斜边
余弦函数
cosine
cos
b/c
∠A的邻边比斜边
正切函数
tangent
tan
a/b
∠A的对边比邻边
余切函数
cotangent
cot
b/a
∠A的邻边比对边
正割函数
secant
sec
c/b
∠A的斜边比邻边
余割函数
cosecant
csc
c/a
∠A的斜边比对边
反三角函数是一种基本初等函数。
它是反正弦arcsin x,反余弦arccos x,反正切arctan x,反余切arc ...
U2L1——Mathf
U2L1——Mathf
Mathf
Math 是 C# 封装好的用于数学计算的工具类 —— 位与 System 命名空间中,即:System.Math
Mathf 是 Unity 中封装好的用于数学计算的工具结构体 —— 位于 UnityEngine 命名空间中
他们都是提供来用于进行数学计算的
区别在于:
Mathf 和 Math 中的相关方法几乎一样
Math 是 C# 自带的工具类 提供一些数学相关的计算方法
Mathf 是 Unity 专门封装的,不仅包含 Math 中的方法 还多了一些适用于游戏开发的方法
所以在 Unity 开发里,使用 Mathf 中的方法用于数学计算即可
本章代码关键字
12345678910111213141516Mathf.PI //πMathf.Abs() //绝对值Mathf.CeilToInt() //向上取整,直接加一Mathf.FloorToInt() //向 ...
UD1L2-PlayerPrefs的存储位置
UD1L2-PlayerPrefs的存储位置
不同平台存储的位置不一样
Windows
HKCU\Software[公司名称][产品名称] 项下的注册表里
其中公司和产品名称是 在“Project Settings”中设置的名称
运行 regedit
HKEY_CURRENT_USER
SOFTWARE
Unity
UnityEditor
公司名称
产品名称
Android
/data/data/包名/shared_prefs/pkg-name.xml
IOS
/Library/Prefereces/[应用ID].plist
UG1L2——文本和按钮控件
UG1L2——文本和按钮控件
本章代码关键字
12345678Rect //描述UI控件位置尺寸信息的结构体Texture //图片信息类GUIContent //综合信息类,可以让Label控件同时显示图片与文字,可以设置tooltip信息GUI.tooltip //可以获取当前鼠标或者键盘选中的GUI控件对应的tooltip信息GUIStyle //自定义样式类,可以控制文本的样式GUI.Label() //绘制文本控件,还可以通过GUIContent和GUIStyle修改显示样式GUI.Button() //绘制按钮控件,如果在按钮的范围内按下并抬起就会返回trueGUI.RepeatButton() //绘制长按按钮控件,只要在按钮范围内按下就会一直返回true
GUI绘制的共同点
它们都是GUI公共类中提供的静态函数,直接调用即可,它们的参数大同小异
主要参数如下:
位置参数:Rect:x, y, w, h ...
UG1L1——工作原理和主要作用
UG1L1——工作原理和主要作用
本章代码关键字
1OnGUI() { } //每帧执行的绘制UI的函数,该函数在OnDisable之前LateUpdate之后执行
主要作用
作为程序员的调试工具 创建游戏内调试工具
为脚本组件创建自定义检视面板
创建新的编辑器窗口和工具以拓展Unity本身(一般用作内置游戏工具)
注意:实际开发不要用它来为玩家制作UI功能!!!
IMGUI工作原理
在继承 MonoBehaviour 的脚本中的特殊函数里调用GUI提供的方法,类似于生命周期函数
1234private void OnGUI(){ //在这里书写 GUI相关代码 即可显示GUI内容}
注意:
它每帧运行 相当于是用于专门绘制GUI界面的函数,一般只在其中执行GUI相关界面绘制和操作逻辑
该函数在 OnDisable 之前 LateUpdate 之后执行
只要是继承 MonoBehaviour 的脚本都可以在 OnGUI() 中绘制GUI
U1SL3——Unity的随机数和委托
U1SL3——Unity的随机数和委托
Unity的随机数
注意 在Unity里Random类 不是 C#自带的Random,这个Random隶属于UnityEngine命名空间
123int randomNum = Random.Range(0, 100); //注意,使用随机数 int重载 规则是 左包含 右不包含!!!print(randomNum);float randomNumF = Random.Range(1.1f, 99.9f); //注意,使用随机数 float重载 规则是 左和右都包含!!!
注意!
使用随机数 int 重载 规则是 左包含 右不包含!!!
使用随机数 float 重载 规则是 左和右都包含!!!
注意:如果还想使用C#自带的随机数,必须要指明System命名空间
12System.Random r = new System.Random();r.Next(0, 100);
Unity的自带委托
UnityEngine命名空间下,也有新的自带委托,但是没有提供有返回值的委托
12345using UnityEngine.E ...
U1SL2——设置鼠标
U1SL2——设置鼠标
隐藏鼠标
false就是隐藏鼠标
1Cursor.visible = false;
锁定鼠标
通过CursorLockMode枚举来决定是否锁定鼠标
None 就是 不锁定
Locked 锁定 鼠标会被限制在屏幕中心点(不仅会锁定还会被隐藏!!!)通过esc可以摆脱编辑模式下的锁定
Confined 限制在窗口内
1Cursor.lockState = CursorLockMode.Confined;
设置鼠标图片
参数一:光标图片
参数二:偏移位置 相对图片左上角
参数三:平台支持的光标模式(硬件或软件)
123456public Texture2D tex;void Start(){ Cursor.SetCursor(tex, Vector2.zero, CursorMode.Auto);}
U1SL1——场景切换和退出游戏
U1SL1——场景切换和退出游戏
场景切换相关
创建场景
方法一:
方法二:
场景切换
在Flie-Build Setting里打开可以看到场景列表,如果要用SceneManager切换场景,
需要提前场景加载到场景列表中!!注意顺序!!打包后默认进入0号场景
注意!如果没有把该场景加载到场景列表中,直接切换场景,可能会报错!!!
123456789using UnityEngine.SceneManagement;if (Input.GetKeyDown(KeyCode.Space)) { //切换到场景2 //直接 写代码 切换场景 可能会报错 //原因是没有把该场景加载到场景列表中 SceneManager.LoadScene("Test2");}
旧版本的方法,不建议使用
1Application.LoadLevel(); //已经过时,不建议使用,使用这个会警告
退出游戏相关
执行这句代码 就会退出游戏,但是,在编辑模式下没有作用,一定是发布游戏过后,才有用
1234567if (Input ...