当前位置:网站首页>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之间的小数
参考来源
边栏推荐
- [prediction model] difference method model
- 简易博客系统
- Detailed explanation of serialization and deserialization
- 【leetcode】1189. Maximum number of "balloons"
- TCP/IP协议里面的网关地址和ip地址有什么区别?
- User experience index system
- Basic concepts of LTE user experience
- LTE CSFB test analysis
- Maxay paper latex template description
- Introduction to data types in MySQL
猜你喜欢
Ipv4中的A 、B、C类网络及子网掩码
No qualifying bean of type ‘......‘ available
Ks003 mall system based on JSP and Servlet
[Massey] Massey font format and typesetting requirements
阿里测试师用UI自动化测试实现元素定位
Yyds dry goods inventory web components series (VII) -- life cycle of custom components
在 .NET 6 中使用 Startup.cs 更简洁的方法
Align items and align content in flex layout
Benefits of automated testing
[Zhao Yuqiang] deploy kubernetes cluster with binary package
随机推荐
Determine which week of the month the day is
如何修改表中的字段约束条件(类型,default, null等)
P7735-[noi2021] heavy and heavy edges [tree chain dissection, line segment tree]
MySql數據庫root賬戶無法遠程登陸解决辦法
ESP32(基于Arduino)连接EMQX的Mqtt服务器上传信息与命令控制
How to execute an SQL statement in MySQL
C form application of C (27)
Conditionally [jsonignore]
Flask learning and project practice 8: introduction and use of cookies and sessions
An article will give you a comprehensive understanding of the internal and external components of "computer"
Differential GPS RTK thousand search
有条件地 [JsonIgnore]
潘多拉 IOT 开发板学习(HAL 库)—— 实验9 PWM输出实验(学习笔记)
Codeforces Round #770 (Div. 2) B. Fortune Telling
Benefits of automated testing
cookie,session,Token 这些你都知道吗?
How to modify field constraints (type, default, null, etc.) in a table
【FPGA教程案例12】基于vivado核的复数乘法器设计与实现
自动化测试的好处
Simple blog system