Unity 小知识

1.Component的复制黏贴

等同于Inspector窗口下的Copy Component,Paste Component Values,Paste Component As New

#if UNITY_EDITOR

//首先复制需要复制的组件
UnityEditorInternal.ComponentUtility.CopyComponent(needCopyComponent);

//粘贴组件的值到另一个组件上
UnityEditorInternal.ComponentUtility.PasteComponentValues(newComponent);

//为GameObject添加复制的组件
UnityEditorInternal.ComponentUtility.PasteComponentAsNew(gameObject);

#endif

 

2.组件删除

//Running模式下
Destroy(component);

//Editor模式下
DestroyImmediate(component);

 

3.Editor模式下执行脚本的Update或OnGUI 方法

有时为了帮助策划搞一下编辑工具,需要在Editor模式下,自动帮其做些操作,要在Update下进行检测。在类的定义前添加ExecuteInEditMode标签即可。

[ExecuteInEditMode]
public class TestComponent : MonoBehaviour
{
}

 

4.弧度与角度的转换

Mathf.Sin(float),Mathf.Cos(float)这些正弦余弦的方法中,参数的单位是弧度而不是角度

弧度:弧长等于半径的弧,其所对的圆心角为1弧度,单位缩写是rad。(半径为r的圆,当某个角度α的弧长为r,那么角度α即为一弧长)

根据定义我们可以知道,圆的周长为2πr,对应360°,即360°=2πr,180°=πr。1rad对应弧长r,可以得出,1rad=180°÷π≈57.295°反过来,1°≈0.01745rad

在Mathf中有两个变量用于转换

Mathf.Deg2Rad = 0.0174532924F;//角度转弧度

Mathf.Rad2Deg = 57.29578F;//弧度转角度

所以如果我们要求sin30°,写法应该为

Mathf.Sin(30 * Mathf.Deg2Rad);

 

5.Vector3.ProjectOnPlane

Vector3.ProjectOnPlane(Vector3 vector, Vector3 planeNormal);将向量vector投影到法向量为planeNormal的平面上。

例如你有个向量Vector3 v = new Vector3(x, y, z); 你想求他在xy轴平面上的向量(法向量为z轴),就可以使用该方法

Vector3.ProjectOnPlane(v, Vector3.forward);

 

6.向量的点积,叉积

点积

Vector3.Dot(Vector3 lhs, Vector3 rhs);

计算方式为:  a·b = |a|·|b|cos<a,b>  其中|a|和|b|表示向量的模,<a,b>表示两个向量的夹角。另外在 点积 中,<a,b>和<b,a> 夹角是不分顺序的。

在a,b非零的前提下,点积如果为负,则a,b形成的角大于90度;如果为零,那么a,b垂直;如果为正,那么a,b形成的角为锐角。由于单位向量的模为1,所以两个单位向量的点积得到两个向量的夹角的cos值,因此我们可以通过点积,计算两个向量的夹角。

Vector3 a = new Vector3(7, 0, 0);
Vector3 b = new Vector3(0, 8, 0);

//c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值