Unity初级(二)

@[TOC]Unity常用类

三.Unity常用类(上)

1.Gameobject类

GameObject 是一个用来描述游戏对象的类gameObject 表示游戏对象,脚本挂给谁,gameObject就是谁

常用属性与方法

gameObject.name 设置/获取一个游戏对象的名字gameObject.tag 设置/获取一个游戏对戏的标签Inspector -> Tag -> Add Tag 或 Edit -> Project Settings -> Tags and Layers 管理标签标签可以用来查询获取游戏对象注意:设置的Tag值需要是预先设置好的tag值gameObject.layer 设置/获取一个游戏对象的层int型 代表层的序号LayerMask 结构体LayerMask.NameToLayer() 通过层名字获取层号
gameObject.layer = LayerMask.NameToLayer(“abc”);LayerMask.LayerToName() 通过层号获取层名字
gameObject.layer = LayerMask.LayerToName(8);Inspector -> Layer -> Add Layer 或 Edit -> Project Settings -> Tags and Layers 管理层层是有序号的,前8个不能更改,是系统自定的层的作用:场景中可以分层显示Main Camera -> Culling Mask 分层获取图像指定层接收/屏蔽射线游戏对象的激活获取游戏对象的激活状态 bool active = gameObject.activeSelf;设置一个游戏对象的激活状态 gameObject.SetActive(false);查找游戏对象通过名字查找 GameObject obj = GameObject.Find(string name);名字不能打错同名的时候,后创建的先找到,返回找到的这个游戏物体
GameObject obj = GameObject.Find("/Sphere/Sphere"); 通过路径查找通过标签查找GameObject obj = GameObject.FindWithTag(string tag); 找到一个,后创建的先找到GameObject[] obj = GameObject.FindGameObjectsWithTag(string tag); 找到所有这个标签的游戏物体推荐使用tag查找,效率高通过组件类型查找SphereCollider[] colliders = GameObject.FindGameObjectsOfType();GameObject中所有的查询方法,都不能找到非激活的物体获取组件BoxCollider collider = gameObject.GetComponent(); 获取组件BoxCollider collider = gameObject.GetComponentInChildren(); 从自己开始往子物体中找,获取组件。如果自己有,选中自己的;自己没有,选中子物体的collider.enabled = false; 设置组件的激活状态添加组件 BoxCollider boxCollider = gameObject.AddComponent();添加脚本 gameObject.AddComponent();销毁游戏对象或者组件Rigidbody rigi = gameObject.GetComponent(); Destroy(rigi); // 直接销毁 Destroy(rigi, 3); // 延迟3秒销毁 Destroy(gameObject, 2); // 2秒后销毁游戏对象

2.Math类

常量作用Mathf.Rad2Deg弧度转角度 degrees = radian * Mathf.Rad2DegMathf.Deg2Rad角度转弧度 radian = degrees * Mathf.Deg2Rad

角度:360° = 弧度:2π反三角函数求出的都是弧度

方法作用Mathf.Abs绝对值Mathf.Pow指定次幂Mathf.Sqrt开平方Mathf.Sin正弦值Mathf.Cos余弦值Mathf.Tan正切值Mathf.Asin反正弦Mathf.Acos反余弦Mathf.Atan反正切,一个参数Mathf.Atan2反正切,两个参数 对边和临边的值Mathf.Floor向上取整Mathf.Round四舍五入Mathf.Ceil向下取整Mathf.Clamp(int value, int min, int max)取限制值:如果小于min返回min,如果大于max返回max,否则返回valueMathf.Lerp(float a, float b, float t)取插值:a和b可以任意设置,t的取值范围是[0, 1],返回a + (b - a) * t

Mathf.Lerp不是为了求一个具体的插值,而是一个趋势,t越小,越趋近于a,t越大,越趋近于b

3.Random类

求随机数

取[min, max)范围内的整型随机数 Random.Range(int min, int max); 取[min, max)范围内的浮点型随机数 Random.Range(float min, float max);

4.Time类

属性作用Time.time获取游戏开始到当前的时间Time.deltaTime获取两帧的时间差(每帧的时间)Time.FixedDeltaTime获取TimeStepTime.timeScale获取/设置Unity和现实世界的时间比例(默认1:1)用来改游戏速度

5.Vector3结构体

表示一个三维空间中的点的坐标,或者表示一条三维向量

// 实例化一个 Vector3 a = new Vector(); // 默认x,y,z都是0 Vector3 a = new Vector(1, 2); // x=1, y=2, z=0 Vector3 a = new Vector(1, 2, 3); // x=1, y=2, z=3
5.1 Vector3的常量

常量值Vector3.zero(0, 0, 0)Vector3.one(1, 1, 1)Vector3.up(0, 1, 0)Vector3.down(0, -1, 0)Vector3.right(1, 0, 0)Vector3.left(-1, 0, 0)Vector3.forward(0, 0, 1)Vector3.back(0, 0, -1)

x轴正方向为右,y轴正方向为上,z轴正方向为前

5.2 Vector3中的运算符重载

  • :x相加 y相加 z相加得到新的点- :x相减 y相减 z相减得到新的点* :例 p * 4 是x/y/z分别乘4 得到新的点== :判断是否相等!= :判断是否不等

5.3 Vector3的属性

属性作用p.normalized求单位向量(标准化向量/向量归一化)p.sqrMagnitude求向量的模的平方(向量的模:向量的长度)p.magnitude求向量的模

5.4 Vector3的方法

方法作用Vector3.Angle(p0, p1)求两个向量的夹角,返回一个角度Vector3.Distance(p0, p1)求两个点的距离Vector3.Cross(p0, p1)求两个向量的叉乘Vector3.Dot(p0, p1)求两个向量的点乘Vector3.Lerp(Vector3 a, Vector3 b, float t)求插值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值