当前位置:网站首页>Unity中几个重要类
Unity中几个重要类
2022-07-06 04:01:00 【A plum in fall】
前言
本博客列举了Unity中较为重要的类中的一些方法,并非全部,详见API文档。
一、GameObject类
1. Find()
- 通过游戏对象名字找查找指定的游戏对象
- Find()查找时,只要是当前场景下面的游戏对象,默认都可以查找到。且不管是将查找的脚本挂载到哪个对象上来,都是可以找到的。含有子父级别关系的,也可以查找到。
- 同名的游戏对象,可以查找到几个?
答:只会查找一个
2. FindWithTag( 标签名 )
- 只会找 一个符合标签名的对象
- 如果没有,null
- 如果没有提前添加指定的标签,错误提示:**** is not defined
3. FindGameObejctsWithTag()
- 通过标签名查找多个符合名字的游戏对象
- 返回的是GameObject类型的数组
- 可对返回的数组进行遍历等操作
- 获取数组长度为:调用 Length
4. 创建游戏对象
5. SetActive( true );
6. GetComponent(typeOf(Transform))
- 建议使用泛型 GetComponent< >
二、Transform类
本类中的属性
1. parent
获取当前游戏对象的父对象
2. root
获取当前游戏对象的顶级别
3. localPosition
获取局部坐标系位置
4. GetInstanceID
获取当前游戏对象的id(唯一的)
5. childCount
获取子对象的个数
本类中的方法
1. GetChild( int index )
获取指定索引值的GameObject
2. IsChildOf ()
判断是否是指定对象的子对象
3. Find()
查找对象
4. Translate()
按指定方向和位置进行移动
i. (x , y , z)
ii. Vector3.left|right|up|down|forward|back
如:向左移动1个单元
transform.Translate(-1,0 , 0);
transform.Translate(Vector3.left);
transform.Translate()函数中,前一个变量是物体的移动速度,这里的速度是一个矢量,既包含大小写包含方向,后一个变量是相对坐标系,这里的相对坐标系有两个值,一个是世界坐标,一个是自身坐标,如果第一个坐标不填写的话,默认为自身坐标系。
注:Space.self | world
transform.Translate(Vector3.up * Time.deltaTime, Space.Self);
5. Rotate()
按指定角度进行旋转
Rotate(参数1,参数2)
使立方体旋转,以Y轴为中心点进行正方向旋转。
transform.Rotate(Vector3.up);
transform.Rotate(Vector3.up * Time.deltaTime);
transform.Rotate(Vector3.up * Time.deltaTime * speed);
使立方体旋转,以X轴为中心点进行旋转。
transform.Rotate(Time.deltaTime, 0, 0);
transform.Rotate(Time.deltaTime * speed, 0, 0);
6.LookAt()
使当前对象朝向目标位置
继承父类得来的Component
1. 属性:name, gameObject, tag, transform…
2. GetComponent<>()
3. GetComponentInChildren<> ()
4. Instantiate
5. Instantiate ( 原对象 )
Instantiate(原对象,新对象的位置,新对象的角度)
该方法是Unity中的Object类提供的方法
用于产生指定游戏对象的复本
当方法执行结束后,会将对象的复本作为 Object 类型返回
该方法一般写在 Update()方法中,一般是在具体条件,否则会一直执行该方法,卡顿。如:单击鼠标左键或键盘某个按键,才会产生复本…
注:如果没有通过第二个参数和第三个参数指定新对象的位置和旋转角度,那么默认会在原物体一样的位置产生一个新的对象(新对象会将原对象覆盖 )
三、Random类
Random类提供的常用方法:伪随机数
1. 种子
2. Range()
Random.Range (min, max):产生的是min到max范围内随机数包含min,但是不包含max
3. 举例
贪吃蛇
四、Time类
1. deltaTime
float返回值
距离上一帧执行耗用时间(小数)
两种使用场景:
1)旋转或移动,速度比较快,*deltaTime控制速度
2)Update()帧率造成的时间不匹配问题,
FixedUpdate()— 物体(刚体)
解决方法:
transform.Translate(Vector3.up * Time.deltaTime)
2. time
可以放在update里面计算从开始到此刻的时间
3. timeScale
暂停
五、Mathf 类
提供了一系列的方法和属性进行数学操作
1. 求绝对值 ABS()
2. 求最大数或最小数 MAX() MIN()
3. 开平方 : Sqrt()
4. 四舍五入
Round()
返回舍入为最近整数的 /f/。
9.1四舍五入为9
9.5四舍五入10
-9.1四舍五入-9
-9.4四舍五入-9
-9.5四舍五入-10
Ceil()
返回大于或等于 f 的最小整数。
Floor()
返回小于或等于 f 的最大整数。
如果这个数是正数,四舍五入后:整数部分
如果这个数是负数,四舍五入后:减1,如:-9.1结果:-10
5. 角度与弧度值(常量值)
Deg2Rad
1角度等于多少弧度
Rad2Deg
1弧度等于多少角度
6. 正无穷大、负无穷大(常量值)
Infinity
print出来是Infinity
NegativeInfinity
print出来是-Infinity
7. 三角函数:Sin(),Cos(),Tan()…
8. 幂次方与指数:Log()、Log10()、Pow()
9. Lerp()
在 a 与 b 之间按 t 进行线性插值。
10. SmoothDamp()
随时间推移将一个值逐渐改变为所需目标。
11. MoveTowards()
将值 current 向 target 靠近。
12. PingPong()
PingPong 返回一个值,该值将在值 0 与 length 之间递增和递减。类型乒乓球。
六、Input 类
鼠标输入
Input类提供的用于处理鼠标输入的相关属性和方法
1. mousePostion
获取鼠标在当前屏幕上的具体坐标
是一个二维坐标(Z轴始终为0)
坐标与当前屏幕像素有关
如果鼠标在当前屏幕的左下角,则为(0,0)
如果鼠标在屏幕的右上角,则为(Screen.Width, Screen.Height)
注:当前屏幕指的是当前Game窗口
2. GetMouseButtonDown(按键码)
当指定的鼠标按键码被按下,返回true
否则,返回false
如:
if(Input.GetButtonDown(2))
{
print(Random.Range(0,10); //[0,10)
}
else
{
print(Random,Range(-10,0)) ///[-10,0)
}
鼠标左键:0
鼠标右键:1
鼠标中间:2
判断当前有没有按下鼠标中间键,如果按下,返回[0,10)之间的随机数,否则返回[-10,0)
3. GetMouseButtonUp(按键码)
当指定的鼠标按键码被按下,返回true
否则,返回false
一般在执行该方法前,先执行按下操作,然后再抬起
4. GetMouseButton(按键码)
当指定的鼠标一直按着,返回true
否则,返回false
5. GetAxis(“Mouse X”)
方法返回float类型的数据
获取鼠标在水平方向上移动的距离
当鼠标在水平方向上正半轴移动时,得到一个正数
当鼠标在水平方向上负半轴移动时,得到一个负数
6. GetAxis(“Mouse Y”)
方法返回float类型的数据
获取鼠标在垂直方向上移动的距离
当鼠标在垂直方向上正半轴移动时,得到一个正数
当鼠标在垂直方向上负半轴移动时,得到一个负数
键盘输入
Input
1. GetKeyDown(键盘按键)
指定某键盘按键被按下时,返回true,否则,返回false
2. GetKeyUp(键盘按键)
指定某键盘按键被抬起时,返回true,否则,返回false
3. GetKey(键盘按键)
指定某键盘按键被一直按着,返回true,否则,返回false
注释:键盘按键的按键码
i. “*****”
如"a"
ii. KeyCode
如KeyCode.A
4. GetAxis(“Horizontal”)
用于判断按了键盘上的那个水平方向键
5. GetAxis(“Vertical”)
用于判断按了键盘上的哪个垂直方向键
如果方法返回 0到1之间的正数,表示按了向上方向
如果方法返回 0到-1之间的负数,表示按了向下方向
返回-1到1之间的小数
参考来源
边栏推荐
- [American competition] mathematical terms
- User experience index system
- Facebook等大厂超十亿用户数据遭泄露,早该关注DID了
- Viewing and verifying backup sets using dmrman
- Database, relational database and NoSQL non relational database
- Le compte racine de la base de données MySQL ne peut pas se connecter à distance à la solution
- LTE CSFB test analysis
- DM8 archive log file manual switching
- Differential GPS RTK thousand search
- Simple blog system
猜你喜欢
Cubemx transplantation punctual atom LCD display routine
《2022年中国银行业RPA供应商实力矩阵分析》研究报告正式启动
【按键消抖】基于FPGA的按键消抖模块开发
Factors affecting user perception
cookie,session,Token 这些你都知道吗?
[PSO] Based on PSO particle swarm optimization, matlab simulation of the calculation of the lowest transportation cost of goods at material points, including transportation costs, agent conversion cos
Le compte racine de la base de données MySQL ne peut pas se connecter à distance à la solution
No qualifying bean of type ‘......‘ available
P7735-[noi2021] heavy and heavy edges [tree chain dissection, line segment tree]
Security xxE vulnerability recurrence (XXe Lab)
随机推荐
Facebook等大廠超十億用戶數據遭泄露,早該關注DID了
Codeforces Global Round 19
登录mysql输入密码时报错,ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: NO/YES
Database, relational database and NoSQL non relational database
WPF效果第一百九十一篇之框选ListBox
In Net 6 CS more concise method
【PSO】基于PSO粒子群优化的物料点货物运输成本最低值计算matlab仿真,包括运输费用、代理人转换费用、运输方式转化费用和时间惩罚费用
How do we make money in agriculture, rural areas and farmers? 100% for reference
Multi project programming minimalist use case
KS008基于SSM的新闻发布系统
Custom event of C (31)
AcWing 243. A simple integer problem 2 (tree array interval modification interval query)
P7735-[noi2021] heavy and heavy edges [tree chain dissection, line segment tree]
MySQL reads missing data from a table in a continuous period of time
The Research Report "2022 RPA supplier strength matrix analysis of China's banking industry" was officially launched
Conditionally [jsonignore]
[adjustable delay network] development of FPGA based adjustable delay network system Verilog
Stc8h development (XII): I2C drive AT24C08, at24c32 series EEPROM storage
【按键消抖】基于FPGA的按键消抖模块开发
Python book learning notes - Chapter 09 section 01 create and use classes